This list is closed, nobody may subscribe to it.
| 2006 |
Jan
|
Feb
|
Mar
(34) |
Apr
(46) |
May
(61) |
Jun
(32) |
Jul
(37) |
Aug
(55) |
Sep
(25) |
Oct
(44) |
Nov
(28) |
Dec
(23) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(27) |
Feb
(71) |
Mar
(55) |
Apr
(10) |
May
(18) |
Jun
(32) |
Jul
(36) |
Aug
(33) |
Sep
(25) |
Oct
(21) |
Nov
(22) |
Dec
|
| 2008 |
Jan
|
Feb
|
Mar
(4) |
Apr
(1) |
May
(4) |
Jun
(9) |
Jul
(10) |
Aug
(3) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2009 |
Jan
|
Feb
(6) |
Mar
|
Apr
(5) |
May
|
Jun
(1) |
Jul
(17) |
Aug
|
Sep
(1) |
Oct
(10) |
Nov
(2) |
Dec
|
| 2010 |
Jan
(2) |
Feb
(6) |
Mar
(7) |
Apr
(14) |
May
|
Jun
(2) |
Jul
(2) |
Aug
(3) |
Sep
(5) |
Oct
|
Nov
|
Dec
(1) |
| 2011 |
Jan
(6) |
Feb
|
Mar
(10) |
Apr
(9) |
May
|
Jun
(1) |
Jul
(2) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2012 |
Jan
(4) |
Feb
(1) |
Mar
(2) |
Apr
(11) |
May
|
Jun
|
Jul
(7) |
Aug
|
Sep
|
Oct
(18) |
Nov
(22) |
Dec
(6) |
| 2013 |
Jan
|
Feb
(21) |
Mar
(3) |
Apr
(3) |
May
|
Jun
(2) |
Jul
(1) |
Aug
(5) |
Sep
(4) |
Oct
(1) |
Nov
(11) |
Dec
(4) |
|
From: <ate...@us...> - 2006-05-01 21:04:00
|
Revision: 96 Author: atenderholt Date: 2006-05-01 14:03:55 -0700 (Mon, 01 May 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=96&view=rev Log Message: ----------- SVN targets in the ADF parser Fixed the ADF unittest because ADF does one more scf cycle after the geometry is converged Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py trunk/test/testall.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-26 01:43:39 UTC (rev 95) +++ trunk/src/cclib/parser/adfparser.py 2006-05-01 21:03:55 UTC (rev 96) @@ -24,7 +24,8 @@ class ADF(Logfile): """A Gaussian 98/03 log file""" - SCFRMS,SCFMAX,SCFENERGY = range(3) # Used to index self.scftargets[] + #SCFRMS,SCFMAX,SCFENERGY = range(3) # Used to index self.scftargets[] + SCFCNV,SCFCNV2 = range(2) #used to index self.scftargets[] def __init__(self,*args): # Call the __init__ method of the superclass @@ -128,17 +129,53 @@ self.natom=len(self.atomnos) self.logger.info("Creating attribute natom: %d" % self.natom) -# if line[1:44]=='Requested convergence on RMS density matrix': -# # Find the targets for SCF convergence (QM calcs) -# if not hasattr(self,"scftargets"): -# self.logger.info("Creating attribute scftargets[]") -# self.scftargets = Numeric.array([0.0,0.0,0.0],'f') -# self.scftargets[G03.SCFRMS] = self.float(line.split('=')[1].split()[0]) -# if line[1:44]=='Requested convergence on MAX density matrix': -# self.scftargets[G03.SCFMAX] = self.float(line.strip().split('=')[1][:-1]) -# if line[1:44]=='Requested convergence on energy': -# self.scftargets[G03.SCFENERGY] = self.float(line.strip().split('=')[1][:-1]) -# + if line[1:22]=="S C F U P D A T E S": +# find targets for SCF convergence (QM calcs) + + if not hasattr(self,"scftargets"): + self.logger.info("Creating attribute scftargets[]") + self.scftargets = Numeric.array([0.0, 0.0],'f') + + #underline, blank, nr + for i in range(3): inputfile.next() + + line=inputfile.next() + self.scftargets[ADF.SCFCNV]=float(line.split()[2]) + line=inputfile.next() + self.scftargets[ADF.SCFCNV2]=float(line.split()[2]) + + if line[1:11]=="CYCLE 1": + + if self.progress and random.random() < fupdate: + step=inputfile.tell() + if step!=oldstep: + self.progress.update(step, "QM Convergence") + oldstep=step + + if not hasattr(self,"scfvalues"): + self.logger.info("Creating attribute scfvalues") + self.scfvalues = [] + + newlist = [ [] for x in self.scftargets ] + line=inputfile.next() + + while line.find("SCF CONVERGED")==-1: + + if line[1:7]=="d-Pmat": + info=line.split() + newlist[ADF.SCFCNV].append(float(info[2])) + + line=inputfile.next() + info=line.split() + newlist[ADF.SCFCNV2].append(float(info[2])) + + try: + line=inputfile.next() + except StopIteration: #EOF reached? + break + + self.scfvalues.append(newlist) + # if line[1:10]=='Cycle 1': # # Extract SCF convergence information (QM calcs) # if self.progress and random.random()<fupdate: Modified: trunk/test/testall.py =================================================================== --- trunk/test/testall.py 2006-04-26 01:43:39 UTC (rev 95) +++ trunk/test/testall.py 2006-05-01 21:03:55 UTC (rev 96) @@ -56,6 +56,11 @@ def setUp(self): self.data = getfile(ADF,"basicADF2004.01","dvb_gopt.adfout") + def testscfvaluedim(self): + """Do the scf values have the right dimensions? + ADF calculations one more SCF cycle after the geometry is converged""" + self.assert_(len(self.data.scfvalues)==len(self.data.geovalues)+1 and len(self.data.scfvalues[0])==len(self.data.scftargets)) + class JaguarGeoOptTest(GenericGeoOptTest): def setUp(self): self.data = getfile(Jaguar,"basicJaguar","eg01","dvb_gopt.out") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-26 01:43:42
|
Revision: 95 Author: atenderholt Date: 2006-04-25 18:43:39 -0700 (Tue, 25 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=95&view=rev Log Message: ----------- Added some elements to logfileparser and some progress code to adfparser Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py trunk/src/cclib/parser/logfileparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-26 01:20:18 UTC (rev 94) +++ trunk/src/cclib/parser/adfparser.py 2006-04-26 01:43:39 UTC (rev 95) @@ -83,7 +83,6 @@ for line in inputfile: if self.progress and random.random()<cupdate: - step = inputfile.tell() if step!=oldstep: self.progress.update(step,"Unsupported Information") @@ -92,16 +91,17 @@ if line.find("INPUT FILE")>=0: #check to make sure we aren't parsing Create jobs while line: + + if self.progress and random.random()<fupdate: + step = inputfile.tell() + #if step!=oldstep: + self.progress.update(step,"Unsupported Information") + oldstep = step + if line.find("INPUT FILE")>=0: line2=inputfile.next() if line2.find("Create")<0: break - - if self.progress and random.random()<cupdate: - step=inputfile.tell() - if step!=oldstep: - self.progress.update(step,"Unsupported Information") - oldstep=step line=inputfile.next() @@ -377,6 +377,7 @@ nosymreps=[] while len(self.fonames)<self.nbasis: + sym=inputfile.next() line=inputfile.next() num=int(line.split(':')[1].split()[0]) @@ -458,14 +459,15 @@ # if line[1:32]=="S F O P O P U L A T I O N S ,": - +#Extract overlap matrix + self.logger.info("Creating attribute fooverlaps[x,y]") self.fooverlaps = Numeric.zeros((self.nbasis,self.nbasis),"float") symoffset=0 for nosymrep in nosymreps: - + line=inputfile.next() while line.find('===')<10: #look for the symmetry labels line=inputfile.next() @@ -475,10 +477,15 @@ base=0 while base<nosymrep: #have we read all the columns? - + for i in range(nosymrep-base): - #while symoffset+base+i<self.nbasis: #have we read all the rows? - #while True: + + if self.progress: + step=inputfile.tell() + if step!=oldstep and random.random() < fupdate: + self.progress.update(step,"Overlap") + oldstep=step + line=inputfile.next() parts=line.split()[1:] @@ -533,7 +540,7 @@ line=inputfile.next() while symoffset+base<self.nbasis: - + line=inputfile.next() if len(line)<3: symoffset+=base @@ -549,6 +556,13 @@ row=0 line=inputfile.next() while len(line)>2: + + if self.progress: + step=inputfile.tell() + if step!=oldstep and random.random() < fupdate: + self.progress.update(step,"Coefficients") + oldstep=step + cols=line.split() for i in range(len(cols[1:])): self.mocoeffs[spin,row+symoffset,i+symoffset+base]=float(cols[i+1]) Modified: trunk/src/cclib/parser/logfileparser.py =================================================================== --- trunk/src/cclib/parser/logfileparser.py 2006-04-26 01:20:18 UTC (rev 94) +++ trunk/src/cclib/parser/logfileparser.py 2006-04-26 01:43:39 UTC (rev 95) @@ -43,7 +43,8 @@ 6 """ def __init__(self): - self.element = [None,"H","He","Li","Be","B","C","N","O","F","Ne"] + self.element = [None,"H","He","Li","Be","B","C","N","O","F","Ne","Na","Mg","Al","Si","P","S","Cl","Ar","K","Ca","Sc","Ti","V","Cr","Mn","Fe" + "Co","Ni","Cu","Zn","Ga","Ge","As","Se","Br","Kr","Rb","Sr","Y","Zr","Nb","Mo"] self.number = {} for i in range(1,len(self.element)): self.number[self.element[i]] = i This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-26 01:20:20
|
Revision: 94 Author: atenderholt Date: 2006-04-25 18:20:18 -0700 (Tue, 25 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=94&view=rev Log Message: ----------- Minor change to progress parts of g03 parser Modified Paths: -------------- trunk/src/cclib/parser/g03parser.py Modified: trunk/src/cclib/parser/g03parser.py =================================================================== --- trunk/src/cclib/parser/g03parser.py 2006-04-26 01:04:49 UTC (rev 93) +++ trunk/src/cclib/parser/g03parser.py 2006-04-26 01:20:18 UTC (rev 94) @@ -114,11 +114,6 @@ if line[1:10]=='Cycle 1': # Extract SCF convergence information (QM calcs) - if self.progress and random.random()<fupdate: - step=inputfile.tell() - if step!=oldstep: - self.progress.update(step,"QM Convergence") - oldstep=step if not hasattr(self,"scfvalues"): self.logger.info("Creating attribute scfvalues") @@ -126,6 +121,13 @@ newlist = [ [] for x in self.scftargets ] line = inputfile.next() while line.find("SCF Done")==-1: + + if self.progress and random.random()<fupdate: + step=inputfile.tell() + if step!=oldstep: + self.progress.update(step,"QM Convergence") + oldstep=step + if line.find(' E=')==0: self.logger.debug(line) if line.find(" RMSDP")==0: @@ -150,17 +152,19 @@ if line[1:4]=='It=': # Extract SCF convergence information (AM1 calcs) - if self.progress: - step=inputfile.tell() - if step!=oldstep: - self.progress.update(step,"AM1 Convergence") - oldstep=step self.logger.info("Creating attributes scftargets, scfvalues") self.scftargets = Numeric.array([1E-7],"f") # This is the target value for the rms self.scfvalues = [[]] line = inputfile.next() while line.find(" Energy")==-1: + + if self.progress: + step=inputfile.tell() + if step!=oldstep: + self.progress.update(step,"AM1 Convergence") + oldstep=step + parts = line.strip().split() self.scfvalues[0].append(self.float(parts[-1][:-1])) line = inputfile.next() @@ -488,6 +492,8 @@ symmetries = inputfile.next() eigenvalues = inputfile.next() for i in range(nbasis): + + line = inputfile.next() if base==0 and not beta: # Just do this the first time 'round # Changed below from :12 to :11 to deal with Elmar Neumann's example This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-26 01:04:52
|
Revision: 93 Author: atenderholt Date: 2006-04-25 18:04:49 -0700 (Tue, 25 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=93&view=rev Log Message: ----------- Have to change setup.py to install cclib.progress Modified Paths: -------------- trunk/setup.py Modified: trunk/setup.py =================================================================== --- trunk/setup.py 2006-04-26 01:02:03 UTC (rev 92) +++ trunk/setup.py 2006-04-26 01:04:49 UTC (rev 93) @@ -5,4 +5,4 @@ author_email="bao...@us...", url="http://cclib.sourceforge.net", package_dir = {'cclib':'src/cclib'}, - packages=['cclib','cclib.parser']) + packages=['cclib','cclib.parser','cclib.progress']) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-26 01:02:14
|
Revision: 92 Author: atenderholt Date: 2006-04-25 18:02:03 -0700 (Tue, 25 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=92&view=rev Log Message: ----------- Created a progress directory. So far, only textprogress will be implemented, although others may be added in the future. Modified Paths: -------------- trunk/src/cclib/__init__.py Added Paths: ----------- trunk/src/cclib/progress/ trunk/src/cclib/progress/__init__.py trunk/src/cclib/progress/textprogress.py Removed Paths: ------------- trunk/src/cclib/parser/textprogress.py Modified: trunk/src/cclib/__init__.py =================================================================== --- trunk/src/cclib/__init__.py 2006-04-25 22:37:15 UTC (rev 91) +++ trunk/src/cclib/__init__.py 2006-04-26 01:02:03 UTC (rev 92) @@ -1 +1,2 @@ import parser +import progress Deleted: trunk/src/cclib/parser/textprogress.py =================================================================== --- trunk/src/cclib/parser/textprogress.py 2006-04-25 22:37:15 UTC (rev 91) +++ trunk/src/cclib/parser/textprogress.py 2006-04-26 01:02:03 UTC (rev 92) @@ -1,46 +0,0 @@ -import sys -import thread - -class TextProgress: - - def __init__(self): - - self.nstep=0 - self.text=None - self.oldprogress=0 - self.progress=0 - self.calls=0 - - def initialize(self,nstep,text=None): - - self.nstep=float(nstep) - self.text=text - - #sys.stdout.write("\n") - - def update(self,step,text=None): - - self.progress = int(step*100/self.nstep) - - if self.progress/2>=self.oldprogress/2+1 or self.text!=text: #just went through at least an interval of ten, ie. from 39 to 41, so update - - str="\r[" - prog=self.progress/10 - str+=prog*"="+(10-prog)*"-" - str+="] %3i"%(self.progress)+"%" - - if text: - str+=" Parsing "+text - - sys.stdout.write("\r"+70*" ") - sys.stdout.flush() - sys.stdout.write(str) - sys.stdout.flush() - self.oldprogress=self.progress - - if(self.progress>=100 and text=="Done"): - print " " - - - return - Added: trunk/src/cclib/progress/__init__.py =================================================================== --- trunk/src/cclib/progress/__init__.py (rev 0) +++ trunk/src/cclib/progress/__init__.py 2006-04-26 01:02:03 UTC (rev 92) @@ -0,0 +1 @@ +from textprogress import TextProgress Copied: trunk/src/cclib/progress/textprogress.py (from rev 89, trunk/src/cclib/parser/textprogress.py) =================================================================== --- trunk/src/cclib/progress/textprogress.py (rev 0) +++ trunk/src/cclib/progress/textprogress.py 2006-04-26 01:02:03 UTC (rev 92) @@ -0,0 +1,46 @@ +import sys +import thread + +class TextProgress: + + def __init__(self): + + self.nstep=0 + self.text=None + self.oldprogress=0 + self.progress=0 + self.calls=0 + + def initialize(self,nstep,text=None): + + self.nstep=float(nstep) + self.text=text + + #sys.stdout.write("\n") + + def update(self,step,text=None): + + self.progress = int(step*100/self.nstep) + + if self.progress/2>=self.oldprogress/2+1 or self.text!=text: #just went through at least an interval of ten, ie. from 39 to 41, so update + + str="\r[" + prog=self.progress/10 + str+=prog*"="+(10-prog)*"-" + str+="] %3i"%(self.progress)+"%" + + if text: + str+=" Parsing "+text + + sys.stdout.write("\r"+70*" ") + sys.stdout.flush() + sys.stdout.write(str) + sys.stdout.flush() + self.oldprogress=self.progress + + if(self.progress>=100 and text=="Done"): + print " " + + + return + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-25 22:37:18
|
Revision: 91 Author: atenderholt Date: 2006-04-25 15:37:15 -0700 (Tue, 25 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=91&view=rev Log Message: ----------- Parse fooverlaps in ADF file. Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-25 18:09:30 UTC (rev 90) +++ trunk/src/cclib/parser/adfparser.py 2006-04-25 22:37:15 UTC (rev 91) @@ -375,10 +375,12 @@ symoffset=0 blank=inputfile.next(); blank=inputfile.next(); blank=inputfile.next() + nosymreps=[] while len(self.fonames)<self.nbasis: sym=inputfile.next() line=inputfile.next() num=int(line.split(':')[1].split()[0]) + nosymreps.append(num) #read until line "--------..." is found while line.find('-----')<0: @@ -453,35 +455,45 @@ # else: # self.nbasis = nbasis # self.logger.info("Creating attribute nbasis: %d" % self.nbasis) -# - if line[1:13]=="====== smat": -# Extract the overlap matrix - self.logger.info("Creating attribute aooverlaps[x,y]") - self.aooverlaps = Numeric.zeros( (self.nbasis,self.nbasis), "float") - # Overlap integrals for basis fn#1 are in aooverlaps[0] - base = 0 +# + if line[1:32]=="S F O P O P U L A T I O N S ,": + + self.logger.info("Creating attribute fooverlaps[x,y]") + self.fooverlaps = Numeric.zeros((self.nbasis,self.nbasis),"float") + + symoffset=0 + + for nosymrep in nosymreps: - while base<self.nbasis: + line=inputfile.next() + while line.find('===')<10: #look for the symmetry labels + line=inputfile.next() + #blank blank text blank col row + for i in range(6): inputfile.next() + + base=0 + + while base<nosymrep: #have we read all the columns? + + for i in range(nosymrep-base): + #while symoffset+base+i<self.nbasis: #have we read all the rows? + #while True: + line=inputfile.next() + parts=line.split()[1:] - if self.progress and random.random()<fupdate: - step=inputfile.tell() - if step!=oldstep: - self.progress.update(step,"Overlap") - oldstep=step - - blankline=inputfile.next() - colName=inputfile.next() - rowName=inputfile.next() + for j in range(len(parts)): + k=float(parts[j]) + self.fooverlaps[base+symoffset+j, base+symoffset+i] = k + self.fooverlaps[base+symoffset+i, base+symoffset+j] = k - for i in range(self.nbasis-base): # Fewer lines this time - line = inputfile.next() - parts = line.split()[1:] - for j in range(len(parts)): # Some lines are longer than others - k = float(parts[j]) - self.aooverlaps[base+j,i+base] = k - self.aooverlaps[i+base,base+j] = k - base += 4 + #blank, blank, column + for i in range(3): inputfile.next() + + base+=4 + + symoffset+=nosymrep + base=0 if line[48:67]=="SFO MO coefficients": #extract MO coefficients This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-25 18:09:31
|
Revision: 90 Author: atenderholt Date: 2006-04-25 11:09:30 -0700 (Tue, 25 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=90&view=rev Log Message: ----------- Removed some commented out gaussian parts from the adfparser Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-25 05:31:06 UTC (rev 89) +++ trunk/src/cclib/parser/adfparser.py 2006-04-25 18:09:30 UTC (rev 90) @@ -258,98 +258,7 @@ temp=Numeric.array(self.moenergies,"f") self.moenergies=temp -# if line[1:19]=='Orbital symmetries' and not hasattr(self,"mosyms"): -# # Extracting orbital symmetries -# if self.progress and random.random()<fupdate: -# step=inputfile.tell() -# if step!=oldstep: -# self.progress.update(step,"MO Symmetries") -# oldstep=step -# -# self.logger.info("Creating attribute mosyms[[]]") -# self.mosyms = [[]] -# line = inputfile.next() -# unres = False -# if line.find("Alpha Orbitals")==1: -# unres = True -# line = inputfile.next() -# i = 0 -# while len(line)>18 and line[17]=='(': -# if line.find('Virtual')>=0: -# self.homos = Numeric.array([i-1],"i") # 'HOMO' indexes the HOMO in the arrays -# self.logger.info("Creating attribute homos[]") -# parts = line[17:].split() -# for x in parts: -# self.mosyms[0].append(x.strip('()')) -# i+= 1 -# line = inputfile.next() -# if unres: -# line = inputfile.next() -# # Repeat with beta orbital information -# i = 0 -# self.mosyms.append([]) -# while len(line)>18 and line[17]=='(': -# if line.find('Virtual')>=0: -# self.homos.resize([2]) # Extend the array to two elements -# self.homos[1] = i-1 # 'HOMO' indexes the HOMO in the arrays -# parts = line[17:].split() -# for x in parts: -# self.mosyms[1].append(x.strip('()')) -# i+= 1 -# line = inputfile.next() -# -# if line[1:6]=="Alpha" and line.find("eigenvalues")>=0: -# # Extract the alpha electron eigenvalues -# if self.progress and random.random()<fupdate: -# step=inputfile.tell() -# if step!=oldstep: -# self.progress.update(step,"Eigenvalues") -# oldstep=step -# -# self.logger.info("Creating attribute moenergies[[]]") -# self.moenergies = [[]] -# HOMO = -2 -# while line.find('Alpha')==1: -# if line.split()[1]=="virt." and HOMO==-2: -# # If there aren't any symmetries, -# # this is a good way to find the HOMO -# HOMO = len(self.moenergies[0])-1 -# if hasattr(self,"homos"): -# assert HOMO==self.homos[0] -# else: -# self.logger.info("Creating attribute homos[]") -# self.homos = Numeric.array([HOMO],"i") -# part = line[28:] -# i = 0 -# while i*10+4<len(part): -# x = part[i*10:(i+1)*10] -# self.moenergies[0].append(convertor(self.float(x),"hartree","eV")) -# i += 1 -# line = inputfile.next() -# if line.find('Beta')==2: -# self.moenergies.append([]) -# HOMO = -2 -# while line.find('Beta')==2: -# if line.split()[1]=="virt." and HOMO==-2: -# # If there aren't any symmetries, -# # this is a good way to find the HOMO -# HOMO = len(self.moenergies[1])-1 -# if len(self.homos)==2: -# # It already has a self.homos (with the Alpha value) -# # but does it already have a Beta value? -# assert HOMO==self.homos[1] -# else: -# self.homos.resize([2]) -# self.homos[1] = HOMO -# part = line[28:] -# i = 0 -# while i*10+4<len(part): -# x = part[i*10:(i+1)*10] -# self.moenergies[1].append(convertor(self.float(x),"hartree","eV")) -# i += 1 -# line = inputfile.next() -# self.moenergies = Numeric.array(self.moenergies,"f") -# + if line[1:24]=="List of All Frequencies": # Start of the IR/Raman frequency section if self.progress and random.random()<fupdate: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-25 05:31:10
|
Revision: 89 Author: atenderholt Date: 2006-04-24 22:31:06 -0700 (Mon, 24 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=89&view=rev Log Message: ----------- Minor fix to make it work with molecules lacking symmetry Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-25 05:27:57 UTC (rev 88) +++ trunk/src/cclib/parser/adfparser.py 2006-04-25 05:31:06 UTC (rev 89) @@ -502,7 +502,9 @@ coeff=float(info[4]) if coeff<0: orbital+='-'+info[5]+info[6].replace(":","") else: orbital+="+"+info[5]+info[6].replace(":","") - + + else: + inputfile.next() self.fonames.append("%s_%s"%(frag,orbital)) symoffset+=num This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-25 02:23:24
|
Revision: 87 Author: atenderholt Date: 2006-04-24 19:23:20 -0700 (Mon, 24 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=87&view=rev Log Message: ----------- Parse SFOs according to specification on wiki. Haven't checked nosym file. Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-24 00:03:18 UTC (rev 86) +++ trunk/src/cclib/parser/adfparser.py 2006-04-25 02:23:20 UTC (rev 87) @@ -451,100 +451,65 @@ #******************************************************************************************************************8 #delete this after new implementation using smat, eigvec print,eprint? -# if line[1:21] == "Total nr. of (C)SFOs": -# # Extract the number of basis sets -# -# self.nbasis=int(line.split(":")[1].split()[0]) -# # e.g. Total nr. of (C)SFOs (summation over all irreps) : 60 -# self.logger.info("Creating attribute nbasis: %i" % self.nbasis) -# -# # now that we're here, let's extract aonames -# -# self.logger.info("Creating attribute aonames[]") -# self.aonames=[] -# -# blank=inputfile.next() -# note=inputfile.next() -# -# while len(self.aonames)<self.nbasis: -# blank=inputfile.next(); blank=inputfile.next(); blank=inputfile.next() -# sym=inputfile.next() -# line=inputfile.next() -# num=int(line.split(':')[1].split()[0]) -# -# #read until line "--------..." is found -# while line.find('--')<0: -# line=inputfile.next() -# -# for i in range(num): -# line=inputfile.next() -# info=line.split() -# temporb=info[8] -# pos=temporb.find(':') -# if pos>0: -# orbital=temporb[:pos]+temporb[pos+1:] -# else: -# orbital=temporb -# -# self.aonames.append("%s%i_%i%s"%(info[5],int(info[9]),int(info[7]),orbital)) -# line=inputfile.next() #get rid of line with energy in eV -#**************************************************************************************************************************** - - if line[1:10]=="BAS: List": - - self.logger.info("Creating attribute aonames[]") - self.aonames=[] - - #get rid of descriptive text - for i in range(18): - inputfile.next() - - line=inputfile.next() - while line[1:5]!="****": - - atomheader=inputfile.next() - underline=inputfile.next() - if len(atomheader)==1: #in the case of gopt, there is no * line after we finish, just two blank lines - break - - funcs=[] + if line[1:49] == "Total nr. of (C)SFOs (summation over all irreps)": +# Extract the number of basis sets + self.nbasis=int(line.split(":")[1].split()[0]) + self.logger.info("Creating attribute nbasis: %i" % self.nbasis) + + # now that we're here, let's extract aonames + + self.logger.info("Creating attribute fonames[]") + self.fonames=[] + + blank=inputfile.next() + note=inputfile.next() + symoffset=0 + blank=inputfile.next(); blank=inputfile.next(); blank=inputfile.next() + + while len(self.fonames)<self.nbasis: + sym=inputfile.next() + line=inputfile.next() + num=int(line.split(':')[1].split()[0]) + + #read until line "--------..." is found + while line.find('-----')<0: + line=inputfile.next() + + #for i in range(num): + while len(self.fonames)<symoffset+num: line=inputfile.next() - - #read functions up to blank line - while len(line)>1: + info=line.split() + + #index0 index1 occ2 energy3/4 fragname5 coeff6 orbnum7 orbname8 fragname9 + orbname=info[8] + orbital=info[7]+orbname.replace(":","") + + fragname=info[5] + frag=fragname+info[9] + + coeff=float(info[6]) + if coeff**2<1.0: #is this a linear combination? + line=inputfile.next() + info=line.split() - if line[1:5]=="****": - break - - if line[12:22]=="0 0 0 0": - funcs.append("1S") - if line[12:22]=="0 0 0 1": - funcs.append("2S") - if line[12:22]=="1 0 0 0": - funcs.append("2PX") - if line[12:22]=="0 1 0 0": - funcs.append("2PY") - if line[12:22]=="0 0 1 0": - funcs.append("2PZ") - - line=inputfile.next() - - element=atomheader[:38].split()[0] - numbers=atomheader[38:].split() - for num in numbers: - for j in range(len(funcs)): - self.aonames.append(element+num+"_"+funcs[j]) - - - self.nbasis=len(self.aonames) - self.logger.info("Creating attribute nbasis: %d" % self.nbasis) + if line[42]==' ': #no new fragment type + frag+="+"+fragname+info[6] + coeff=float(info[3]) + if coeff<0: orbital+='-'+info[4]+info[5].replace(":","") + else: orbital+='+'+info[4]+info[5].replace(":","") + else: + frag+="+"+info[3]+info[7] + coeff=float(info[4]) + if coeff<0: orbital+='-'+info[5]+info[6].replace(":","") + else: orbital+="+"+info[5]+info[6].replace(":","") + + self.fonames.append("%s_%s"%(frag,orbital)) + symoffset+=num - if line[1:49]=="Total nr. of (C)SFOs (summation over all irreps)": -#Extract the number of basis sets - self.nbasis=int(line.split()[-1]) - self.logger.info("Creating attribute nbasis: %d" % self.nbasis) - + #nextline blankline blankline + inputfile.next(); inputfile.next(); inputfile.next() + # if line[1:7]=="NBasis" or line[4:10]=="NBasis": # # Extract the number of basis sets # nbasis = int(line.split('=')[1].split()[0]) @@ -608,7 +573,7 @@ base += 4 if line[48:67]=="SFO MO coefficients": - +#extract MO coefficients #read stars and three blank lines inputfile.next() inputfile.next() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-24 00:03:24
|
Revision: 86 Author: atenderholt Date: 2006-04-23 17:03:18 -0700 (Sun, 23 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=86&view=rev Log Message: ----------- Parse mocoeffs in terms of SFOs Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-23 22:39:20 UTC (rev 85) +++ trunk/src/cclib/parser/adfparser.py 2006-04-24 00:03:18 UTC (rev 86) @@ -607,7 +607,70 @@ self.aooverlaps[i+base,base+j] = k base += 4 - + if line[48:67]=="SFO MO coefficients": + + #read stars and three blank lines + inputfile.next() + inputfile.next() + inputfile.next() + inputfile.next() + + line=inputfile.next() + + if line.find("***** SPIN 1 *****")>0: + beta = 1 + self.mocoeffs = Numeric.zeros((2,self.nbasis,self.nbasis),"float") + + #get rid of two blank lines and symmetry label + inputfile.next() + inputfile.next() + sym=inputfile.next() + #print sym + + else: + beta = 0 + self.mocoeffs = Numeric.zeros((1,self.nbasis,self.nbasis),"float") + + #get rid of 12 lines of text + for i in range(10): + inputfile.next() + + for spin in range(beta+1): + symoffset=0 + base=0 + + if spin==1: + #read spin, blank, blank, symlabel, blank, text, underline, blank + for i in range(8): + line=inputfile.next() + + while symoffset+base<self.nbasis: + + line=inputfile.next() + if len(line)<3: + symoffset+=base + base=0 + #print symoffset + + monumbers=line.split() + #print monumbers + #get rid of next two lines + inputfile.next() + inputfile.next() + + row=0 + line=inputfile.next() + while len(line)>2: + cols=line.split() + for i in range(len(cols[1:])): + self.mocoeffs[spin,row+symoffset,i+symoffset+base]=float(cols[i+1]) + + line=inputfile.next() + row+=1 + + base+=len(cols[1:]) + + # if line[5:35]=="Molecular Orbital Coefficients" or line[5:41]=="Alpha Molecular Orbital Coefficients" or line[5:40]=="Beta Molecular Orbital Coefficients": # if line[5:40]=="Beta Molecular Orbital Coefficients": # beta = True This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-23 22:39:22
|
Revision: 85 Author: atenderholt Date: 2006-04-23 15:39:20 -0700 (Sun, 23 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=85&view=rev Log Message: ----------- Parse number of basis functions (i.e. SFOs) Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-22 18:17:31 UTC (rev 84) +++ trunk/src/cclib/parser/adfparser.py 2006-04-23 22:39:20 UTC (rev 85) @@ -539,6 +539,12 @@ self.nbasis=len(self.aonames) self.logger.info("Creating attribute nbasis: %d" % self.nbasis) + if line[1:49]=="Total nr. of (C)SFOs (summation over all irreps)": +#Extract the number of basis sets + self.nbasis=int(line.split()[-1]) + self.logger.info("Creating attribute nbasis: %d" % self.nbasis) + + # if line[1:7]=="NBasis" or line[4:10]=="NBasis": # # Extract the number of basis sets # nbasis = int(line.split('=')[1].split()[0]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-22 18:17:37
|
Revision: 84 Author: baoilleach Date: 2006-04-22 11:17:31 -0700 (Sat, 22 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=84&view=rev Log Message: ----------- Extracted ir and freq info. Not sure how to handle to symmetry yet. It seems to be split into different sections based on symmetry. Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-22 17:39:59 UTC (rev 83) +++ trunk/src/cclib/parser/adfparser.py 2006-04-22 18:17:31 UTC (rev 84) @@ -350,48 +350,31 @@ # line = inputfile.next() # self.moenergies = Numeric.array(self.moenergies,"f") # -# if line[1:14]=="Harmonic freq": -# # Start of the IR/Raman frequency section -# if self.progress and random.random()<fupdate: -# step=inputfile.tell() -# if step!=oldstep: -# self.progress.update(step,"Frequency Information") -# oldstep=step -# -# self.vibsyms = [] -# self.vibirs = [] -# self.vibfreqs = [] + if line[1:24]=="List of All Frequencies": +# Start of the IR/Raman frequency section + if self.progress and random.random()<fupdate: + step=inputfile.tell() + if step!=oldstep: + self.progress.update(step,"Frequency Information") + oldstep=step + +# self.vibsyms = [] # Need to look into this a bit more + self.vibirs = [] + self.vibfreqs = [] # self.logger.info("Creating attribute vibsyms[]") -# self.logger.info("Creating attribute vibfreqs[]") -# self.logger.info("Creating attribute vibirs[]") -# line = inputfile.next() -# while len(line[:15].split())>0: -# # Get past the three/four line title of the columns -# line = inputfile.next() -# line = inputfile.next() # The line with symmetries -# while len(line[:15].split())==0: -# self.logger.debug(line) -# self.vibsyms.extend(line.split()) # Adding new symmetry -# line = inputfile.next() -# self.vibfreqs.extend(map(self.float,line[15:].split())) # Adding new frequencies -# [inputfile.next() for i in [0,1]] # Skip two lines -# line = inputfile.next() -# self.vibirs.extend(map(self.float,line[15:].split())) # Adding IR intensities -# line = inputfile.next() -# if line.find("Raman")>=0: -# if not hasattr(self,"vibramans"): -# self.vibramans = [] -# self.logger.info("Creating attribute vibramans[]") -# line = inputfile.next() -# self.vibramans.extend(map(self.float,line[15:].split())) # Adding Raman intensities -# line = inputfile.next() -# while len(line[:15].split())>0: -# line = inputfile.next() -# line = inputfile.next() # Should be the line with symmetries -# self.vibfreqs = Numeric.array(self.vibfreqs,"f") -# self.vibirs = Numeric.array(self.vibirs,"f") -# if hasattr(self,"vibramans"): self.vibramans = Numeric.array(self.vibramans,"f") -# + self.logger.info("Creating attribute vibfreqs[],vibirs[]") + for i in range(8): + line = inputfile.next() + line = inputfile.next().strip() + while line: + temp = line.split() + self.vibfreqs.append(float(temp[0])) + self.vibirs.append(float(temp[2])) # or is it temp[1]? + line = inputfile.next().strip() + self.vibfreqs = Numeric.array(self.vibfreqs,"f") + self.vibirs = Numeric.array(self.vibirs,"f") + if hasattr(self,"vibramans"): self.vibramans = Numeric.array(self.vibramans,"f") + # if line[1:14]=="Excited State": # # Extract the electronic transitions # if not hasattr(self,"etenergy"): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-22 17:40:09
|
Revision: 83 Author: baoilleach Date: 2006-04-22 10:39:59 -0700 (Sat, 22 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=83&view=rev Log Message: ----------- Adding a script to parse ADF files Added Paths: ----------- trunk/test/parseADF.py Added: trunk/test/parseADF.py =================================================================== --- trunk/test/parseADF.py (rev 0) +++ trunk/test/parseADF.py 2006-04-22 17:39:59 UTC (rev 83) @@ -0,0 +1,12 @@ +import os +from cclib.parser import ADF + +os.chdir(os.path.join("..","data","ADF")) + +os.chdir("basicADF2004.01") + +for file in ["dvb_gopt.adfout"]: + t = ADF(file) + t.parse() + + Property changes on: trunk/test/parseADF.py ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-22 17:34:55
|
Revision: 82 Author: baoilleach Date: 2006-04-22 10:34:47 -0700 (Sat, 22 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=82&view=rev Log Message: ----------- Extracts geovalues, geotargets and scfenergies...although the scf energy is quite different from those of the other parsers. Maybe this is a question of units? Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-22 10:00:16 UTC (rev 81) +++ trunk/src/cclib/parser/adfparser.py 2006-04-22 17:34:47 UTC (rev 82) @@ -175,51 +175,30 @@ # break # self.scfvalues.append(newlist) # -# if line[1:4]=='It=': -# # Extract SCF convergence information (AM1 calcs) -# if self.progress: -# step=inputfile.tell() -# if step!=oldstep: -# self.progress.update(step,"AM1 Convergence") -# oldstep=step -# -# self.logger.info("Creating attributes scftargets, scfvalues") -# self.scftargets = Numeric.array([1E-7],"f") # This is the target value for the rms -# self.scfvalues = [[]] -# line = inputfile.next() -# while line.find(" Energy")==-1: -# parts = line.strip().split() -# self.scfvalues[0].append(self.float(parts[-1][:-1])) -# line = inputfile.next() -# -# if line[1:9]=='SCF Done': -# # Note: this needs to follow the section where 'SCF Done' is used to terminate -# # a loop when extracting SCF convergence information -# if not hasattr(self,"scfenergies"): -# self.logger.info("Creating attribute scfenergies[]") -# self.scfenergies = [] -# self.scfenergies.append(self.float(line.split()[4])) -# -# if line[49:59]=='Converged?': -# # Extract Geometry convergence information -# if not hasattr(self,"geotargets"): -# self.logger.info("Creating attributes geotargets[],geovalues[[]]") -# self.geovalues = [] -# self.geotargets = Numeric.array( [0.0,0.0,0.0,0.0],"f") -# newlist = [0]*4 -# for i in range(4): -# line = inputfile.next() -# self.logger.debug(line) -# parts = line.split() -# try: -# value = self.float(parts[2]) -# except ValueError: -# self.logger.error("Problem parsing the value for geometry optimisation: %s is not a number." % parts[2]) -# else: -# newlist[i] = value -# self.geotargets[i] = self.float(parts[3]) -# self.geovalues.append(newlist) -# + + if line[1:27]=='Geometry Convergence Tests': +# Extract Geometry convergence information + if not hasattr(self,"geotargets"): + self.logger.info("Creating attributes geotargets[],geovalues[[]]") + self.geovalues = [] + self.geotargets = Numeric.array( [0.0,0.0,0.0,0.0,0.0],"f") + if not hasattr(self,"scfenergies"): + self.logger.info("Creating attribute scfenergies[]") + self.scfenergies = [] + equals = inputfile.next() + blank = inputfile.next() + line = inputfile.next() + temp = inputfile.next().strip().split() + self.scfenergies.append(convertor(float(temp[-1]),"hartree","eV")) + for i in range(6): + line = inputfile.next() + values = [] + for i in range(5): + temp = inputfile.next().split() + self.geotargets[i] = float(temp[-3]) + values.append(float(temp[-4])) + self.geovalues.append(values) + if line[1:29]=='Orbital Energies, all Irreps' and not hasattr(self,"mosyms"): #Extracting orbital symmetries and energies, homos self.logger.info("Creating attribute mosyms[[]]") @@ -689,7 +668,7 @@ if hasattr(self,"geovalues"): self.geovalues = Numeric.array(self.geovalues,"f") if hasattr(self,"scfenergies"): self.scfenergies = Numeric.array(self.scfenergies,"f") - if hasattr(self,"scfvalues"): self.scfvalues = Numeric.array(self.scftargets,"f") + if hasattr(self,"scfvalues"): self.scfvalues = [Numeric.array(x,"f") for x in self.scfvalues] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-22 10:00:26
|
Revision: 81 Author: baoilleach Date: 2006-04-22 03:00:16 -0700 (Sat, 22 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=81&view=rev Log Message: ----------- Updated types of scfvalues to be a list of Numeric arrays Modified Paths: -------------- trunk/src/cclib/parser/gamessparser.py Modified: trunk/src/cclib/parser/gamessparser.py =================================================================== --- trunk/src/cclib/parser/gamessparser.py 2006-04-22 09:27:04 UTC (rev 80) +++ trunk/src/cclib/parser/gamessparser.py 2006-04-22 10:00:16 UTC (rev 81) @@ -126,7 +126,7 @@ self.logger.info("Creating attribute scfvalues") self.scfvalues = [] line = inputfile.next() - den = [] + values = [] while line.strip(): # The SCF information is terminated by a blank line try: @@ -138,9 +138,9 @@ # DFT CODE IS SWITCHING BACK TO THE FINER GRID pass else: - den.append(float(line.split()[5])) + values.append(float(line.split()[5])) line = inputfile.next() - self.scfvalues.append(den) + self.scfvalues.append([values]) if line.find("NORMAL COORDINATE ANALYSIS IN THE HARMONIC APPROXIMATION")>=0: # GAMESS has... @@ -348,6 +348,8 @@ if not hasattr(self,"scftargets"): self.logger.info("Creating attribute scftargets[] with default values") self.scftargets = Numeric.array([1e-5]) + if hasattr(self,"scfvalues"): + self.scfvalues = [Numeric.array(x,"f") for x in self.scfvalues] if hasattr(self,"geovalues"): self.geovalues = Numeric.array(self.geovalues,"f") if not hasattr(self,"nindep"): self.logger.info("Creating attribute nindep with default value") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-22 09:27:19
|
Revision: 80 Author: baoilleach Date: 2006-04-22 02:27:04 -0700 (Sat, 22 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=80&view=rev Log Message: ----------- Fixed bug (scfvalues was set equal to scf targets...ooops) and changed type of scfvalues to a list of arrays Modified Paths: -------------- trunk/src/cclib/parser/g03parser.py Modified: trunk/src/cclib/parser/g03parser.py =================================================================== --- trunk/src/cclib/parser/g03parser.py 2006-04-22 09:24:03 UTC (rev 79) +++ trunk/src/cclib/parser/g03parser.py 2006-04-22 09:27:04 UTC (rev 80) @@ -513,7 +513,7 @@ if hasattr(self,"geovalues"): self.geovalues = Numeric.array(self.geovalues,"f") if hasattr(self,"scfenergies"): self.scfenergies = Numeric.array(self.scfenergies,"f") - if hasattr(self,"scfvalues"): self.scfvalues = Numeric.array(self.scftargets,"f") + if hasattr(self,"scfvalues"): self.scfvalues = [Numeric.array(x,"f") for x in self.scfvalues] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-22 09:24:12
|
Revision: 79 Author: baoilleach Date: 2006-04-22 02:24:03 -0700 (Sat, 22 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=79&view=rev Log Message: ----------- New test for scfvalues to ensure that it has (a) right dimensions compared to geovalues and scftargets and (b) is the correct type: a list of Numeric arrays Modified Paths: -------------- trunk/test/testall.py Modified: trunk/test/testall.py =================================================================== --- trunk/test/testall.py 2006-04-21 07:10:27 UTC (rev 78) +++ trunk/test/testall.py 2006-04-22 09:24:03 UTC (rev 79) @@ -32,6 +32,14 @@ sumwronglabels = sum([x not in ['Ag','Bu','Au','Bg'] for x in self.data.mosyms[0]]) self.assertEquals(sumwronglabels,0) + def testscfvaluetype(self): + """Do the scf values have the right type?""" + self.assert_(type(self.data.scfvalues[0])==type(array([])) and type(self.data.scfvalues)==type([])) + + def testscfvaluedim(self): + """Do the scf values have the right dimensions?""" + self.assert_(len(self.data.scfvalues)==len(self.data.geovalues) and len(self.data.scfvalues[0])==len(self.data.scftargets)) + class GaussianGeoOptTest(GenericGeoOptTest): def setUp(self): self.data = getfile(G03,"basicGaussian03","dvb_gopt.out") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-21 07:10:28
|
Revision: 78 Author: atenderholt Date: 2006-04-21 00:10:27 -0700 (Fri, 21 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=78&view=rev Log Message: ----------- Made moenergies and mosyms parsing of dvb_un_sp.adfout work. Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-21 01:02:57 UTC (rev 77) +++ trunk/src/cclib/parser/adfparser.py 2006-04-21 07:10:27 UTC (rev 78) @@ -236,8 +236,8 @@ homoa=None homob=None - - while len(line)>1: + + while len(line)==77: info=line.split() if len(info)==5: #this is restricted self.mosyms[0].append(self.normalisesym(info[0])) @@ -247,8 +247,9 @@ self.homos=[len(self.moenergies[0])-2] line=inputfile.next() elif len(info)==6: #this is unrestricted - self.moenergies.append([]) - self.mosyms.append([]) + if len(self.moenergies)<2: #if we don't have space, create it + self.moenergies.append([]) + self.mosyms.append([]) if info[2]=='A': self.mosyms[0].append(self.normalisesym(info[0])) self.moenergies[0].append(convertor(float(info[4]),'hartree','eV')) @@ -265,12 +266,19 @@ else: #different number of lines print "Error",info + if len(info)==6: #still unrestricted, despite being out of loop self.logger.info("Creating attribute homos[]") self.homos=[homoa,homob] - - self.moenergies=Numeric.array(self.moenergies,"f") - + +# tempa=Numeric.array(self.moenergies[0],"f") +# tempb=Numeric.array(self.moenergies[1],"f") +# self.moenergies=[tempa,tempb] +# elif len(info)==5: +# self.moenergies=[ + + temp=Numeric.array(self.moenergies,"f") + self.moenergies=temp # if line[1:19]=='Orbital symmetries' and not hasattr(self,"mosyms"): # # Extracting orbital symmetries # if self.progress and random.random()<fupdate: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <ate...@us...> - 2006-04-21 01:03:21
|
Revision: 77 Author: atenderholt Date: 2006-04-20 18:02:57 -0700 (Thu, 20 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=77&view=rev Log Message: ----------- Some work on the ADF parser. Still passes the dvb_gopt test, parses dvb_sp and dvb_sp_b, but work on dvb_un_sp is incomplete (ie it fails). Since that is what is being worked on and it has no tests yet, I figure it can be safely committed. Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-17 20:44:09 UTC (rev 76) +++ trunk/src/cclib/parser/adfparser.py 2006-04-21 01:02:57 UTC (rev 77) @@ -234,6 +234,9 @@ underline2=inputfile.next() line=inputfile.next() + homoa=None + homob=None + while len(line)>1: info=line.split() if len(info)==5: #this is restricted @@ -243,6 +246,29 @@ self.logger.info("Creating attribute homos[]") self.homos=[len(self.moenergies[0])-2] line=inputfile.next() + elif len(info)==6: #this is unrestricted + self.moenergies.append([]) + self.mosyms.append([]) + if info[2]=='A': + self.mosyms[0].append(self.normalisesym(info[0])) + self.moenergies[0].append(convertor(float(info[4]),'hartree','eV')) + if info[3]=='0.00' and homoa==None: + homoa=len(self.moenergies[0])-2 + + if info[2]=='B': + self.mosyms[1].append(self.normalisesym(info[0])) + self.moenergies[1].append(convertor(float(info[4]),'hartree','eV')) + if info[3]=='0.00' and homob==None: + homob=len(self.moenergies[1])-2 + + line=inputfile.next() + + else: #different number of lines + print "Error",info + if len(info)==6: #still unrestricted, despite being out of loop + self.logger.info("Creating attribute homos[]") + self.homos=[homoa,homob] + self.moenergies=Numeric.array(self.moenergies,"f") # if line[1:19]=='Orbital symmetries' and not hasattr(self,"mosyms"): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-17 20:44:22
|
Revision: 76 Author: baoilleach Date: 2006-04-17 13:44:09 -0700 (Mon, 17 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=76&view=rev Log Message: ----------- Parse IR frequency info. Modified Paths: -------------- trunk/src/cclib/parser/jaguarparser.py Modified: trunk/src/cclib/parser/jaguarparser.py =================================================================== --- trunk/src/cclib/parser/jaguarparser.py 2006-04-17 20:43:24 UTC (rev 75) +++ trunk/src/cclib/parser/jaguarparser.py 2006-04-17 20:44:09 UTC (rev 76) @@ -64,6 +64,7 @@ if not hasattr(self,"scfvalues"): self.scfvalues = [] self.logger.info("Creating attribute: scfvalues") + values = [] while line[0:4]=="etot": if line[39:47].strip(): denergy = float(line[39:47]) @@ -72,8 +73,9 @@ # or should we just ignore the values in this line ddensity = float(line[48:56]) maxdiiserr = float(line[57:65]) - self.scfvalues.append([denergy,ddensity,maxdiiserr]) + values.append([denergy,ddensity,maxdiiserr]) line = inputfile.next() + self.scfvalues.append(values) if line[1:5]=="SCFE": # Get the energy of the molecule @@ -128,10 +130,40 @@ self.logger.info("Creating attribute: nbasis") self.nbasis = float(line.strip().split()[-1]) + if line[2:23]=="start of program freq": +# IR stuff + self.logger.info("Creating attribute: vibfreqs") + self.vibfreqs = [] + blank = inputfile.next() + line = inputfile.next(); line = inputfile.next() + blank = inputfile.next() + + freqs = inputfile.next() + while freqs!=blank: + temp = freqs.strip().split() + self.vibfreqs.extend(map(float,temp[1:])) + temp = inputfile.next().strip().split() + if temp[0]=="symmetries": # May go straight from frequencies to reduced mass + if not hasattr(self,"vibsyms"): + self.logger.info("Creating attributes: vibsyms, vibirs") + self.vibsyms = [] + self.vibirs = [] + self.vibsyms.extend(map(self.normalisesym,temp[1:])) + temp = inputfile.next().strip().split() + self.vibirs.extend(map(float,temp[1:])) + reducedmass = inputfile.next() + line = inputfile.next() + while line!=blank: # Read the cartesian displacements + line = inputfile.next() + freqs = inputfile.next() + self.vibfreqs = Numeric.array(self.vibfreqs) + if hasattr(self,"vibirs"): + self.vibirs = Numeric.array(self.vibirs) + inputfile.close() - if hasattr(self,"scfvalues"): - self.scfvalues = Numeric.array(self.scfvalues,"f") +## if hasattr(self,"scfvalues"): +## self.scfvalues = Numeric.array(self.scfvalues,"f") if hasattr(self,"scfenergies"): self.scfenergies = Numeric.array(self.scfenergies,"f") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-17 20:43:29
|
Revision: 75 Author: baoilleach Date: 2006-04-17 13:43:24 -0700 (Mon, 17 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=75&view=rev Log Message: ----------- Test the parsing of all of the uploaded Jaguar files Modified Paths: -------------- trunk/test/parseJaguar.py Modified: trunk/test/parseJaguar.py =================================================================== --- trunk/test/parseJaguar.py 2006-04-17 15:28:13 UTC (rev 74) +++ trunk/test/parseJaguar.py 2006-04-17 20:43:24 UTC (rev 75) @@ -3,12 +3,13 @@ os.chdir(os.path.join("..","data","Jaguar","basicJaguar")) -os.chdir("eg01") +files = [ ["eg01","dvb_gopt.out"], + ["eg02","dvb_sp.out"], + ["eg03","dvb_ir.out"], + ["eg06","dvb_un_sp.out"] ] -for file in ["dvb_gopt.out"]: - t = Jaguar(file) - t.parse() - -print t.moenergies[0,:] -print t.homos[0] -print t.moenergies[0,t.homos[0]] +for f in files: + t = Jaguar(os.path.join(f[0],f[1])) + t.parse() + if f[0]!="eg03": + print t.scfvalues This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-17 15:28:28
|
Revision: 74 Author: baoilleach Date: 2006-04-17 08:28:13 -0700 (Mon, 17 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=74&view=rev Log Message: ----------- Added code to normalise the symmetry for every possible case. Wasn't sure what to do with the symmetries labelled using greek letters, e.g. delta. Considered using unicode characters, but in the end just used the word delta. Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py Modified: trunk/src/cclib/parser/adfparser.py =================================================================== --- trunk/src/cclib/parser/adfparser.py 2006-04-15 09:28:56 UTC (rev 73) +++ trunk/src/cclib/parser/adfparser.py 2006-04-17 15:28:13 UTC (rev 74) @@ -38,6 +38,36 @@ """Return a representation of the object.""" return 'ADF("%s")' % (self.filename) + def normalisesym(self,label): + """Use standard symmetry labels instead of ADF labels. + + To normalise: + (1) any periods are removed (except in the case of greek letters) + (2) XXX is replaced by X, and a " added. + (3) XX is replaced by X, and a ' added. + (4) The greek letters Sigma, Pi, Delta and Phi are replaced by + their lowercase equivalent. + + >>> sym = ADF("dummyfile").normalisesym + >>> labels = ['A','s','A1','A1.g','Sigma','Pi','Delta','Phi','Sigma.g','A.g','AA','AAA','EE1','EEE1'] + >>> map(sym,labels) + ['A', 's', 'A1', 'A1g', 'sigma', 'pi', 'delta', 'phi', 'sigma.g', 'Ag', "A'", 'A"', "E1'", 'E1"'] + """ + greeks = ['Sigma','Pi','Delta','Phi'] + for greek in greeks: + if label.startswith(greek): + return label.lower() + + ans = label.replace(".","") + l = len(ans) + if l>1 and ans[0]==ans[1]: # Python only tests the second condition if the first is true + if l>2 and ans[1]==ans[2]: + ans = ans.replace(ans[0]*3,ans[0]) + '"' + else: + ans = ans.replace(ans[0]*2,ans[0]) + "'" + return ans + + def parse(self,fupdate=0.05,cupdate=0.002): """Extract information from the logfile.""" inputfile = open(self.filename,"r") @@ -207,7 +237,7 @@ while len(line)>1: info=line.split() if len(info)==5: #this is restricted - self.mosyms[0].append(info[0].replace('.','')) + self.mosyms[0].append(self.normalisesym(info[0])) self.moenergies[0].append(convertor(float(info[3]),'hartree','eV')) if info[2]=='0.00' and not hasattr(self,'homos'): self.logger.info("Creating attribute homos[]") @@ -656,5 +686,5 @@ assert len(self.traj)==len(self.trajSummary) if __name__=="__main__": - import doctest,parser - doctest.testmod(parser,verbose=False) + import doctest,adfparser + doctest.testmod(adfparser,verbose=False) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-15 09:29:06
|
Revision: 73 Author: baoilleach Date: 2006-04-15 02:28:56 -0700 (Sat, 15 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=73&view=rev Log Message: ----------- Added call to normalisesym so that mosyms should now contain the correct symmetries. Modified Paths: -------------- trunk/src/cclib/parser/gamessparser.py Modified: trunk/src/cclib/parser/gamessparser.py =================================================================== --- trunk/src/cclib/parser/gamessparser.py 2006-04-15 09:25:14 UTC (rev 72) +++ trunk/src/cclib/parser/gamessparser.py 2006-04-15 09:28:56 UTC (rev 73) @@ -247,7 +247,7 @@ line = inputfile.next() self.moenergies[0].extend([convertor(float(x),"hartree","eV") for x in line.split()]) line = inputfile.next() - self.mosyms[0].extend(line.split()) + self.mosyms[0].extend(map(self.normalisesym,line.split())) for i in range(self.nbasis): line = inputfile.next() if base==0: # Just do this the first time 'round @@ -284,7 +284,7 @@ line = inputfile.next() self.moenergies[1].extend([convertor(float(x),"hartree","eV") for x in line.split()]) line = inputfile.next() - self.mosyms[1].extend(line.split()) + self.mosyms[1].extend(map(self.normalisesym,line.split())) for i in range(self.nbasis): line = inputfile.next() temp = line[15:] # Strip off the crud at the start This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-15 09:25:22
|
Revision: 72 Author: baoilleach Date: 2006-04-15 02:25:14 -0700 (Sat, 15 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=72&view=rev Log Message: ----------- Corrected energy units for moenergies Modified Paths: -------------- trunk/src/cclib/parser/jaguarparser.py Modified: trunk/src/cclib/parser/jaguarparser.py =================================================================== --- trunk/src/cclib/parser/jaguarparser.py 2006-04-15 09:12:20 UTC (rev 71) +++ trunk/src/cclib/parser/jaguarparser.py 2006-04-15 09:25:14 UTC (rev 72) @@ -113,7 +113,7 @@ while line.strip(): temp = line.strip().split() for i in range(0,len(temp),2): - self.moenergies[0].append(float(temp[i])) + self.moenergies[0].append(convertor(float(temp[i]),"hartree","eV")) self.mosyms[0].append(temp[i+1]) line = inputfile.next() self.moenergies = Numeric.array(self.moenergies,"f") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <bao...@us...> - 2006-04-15 09:12:24
|
Revision: 71 Author: baoilleach Date: 2006-04-15 02:12:20 -0700 (Sat, 15 Apr 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=71&view=rev Log Message: ----------- Mispelling Modified Paths: -------------- trunk/test/testall.py Modified: trunk/test/testall.py =================================================================== --- trunk/test/testall.py 2006-04-15 09:07:25 UTC (rev 70) +++ trunk/test/testall.py 2006-04-15 09:12:20 UTC (rev 71) @@ -23,7 +23,7 @@ """Did this subclasses overwrite normalisesym?""" self.assertNotEquals(self.data.normalisesym("A"),"ERROR: This should be overwritten by this subclass") - def testlengthmosyms(self): + def testlengthmoenergies(self): """Is the number of evalues equal to 60?""" self.assertEquals(60,len(self.data.moenergies[0])) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |