From: <bao...@us...> - 2006-03-06 10:33:39
|
Revision: 3 Author: baoilleach Date: 2006-03-06 02:33:31 -0800 (Mon, 06 Mar 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=3&view=rev Log Message: ----------- Made necessary fixes to get cclib up and running. It now parses Adam's large test file. Removed references to gausssum in setup.py. Added call to superclass __init__ method for G03. Fixed error in Logfile.float. Modified Paths: -------------- trunk/setup.py trunk/src/cclib/parser.py Modified: trunk/setup.py =================================================================== --- trunk/setup.py 2006-03-05 22:18:59 UTC (rev 2) +++ trunk/setup.py 2006-03-06 10:33:31 UTC (rev 3) @@ -1,9 +1,8 @@ from distutils.core import setup setup(name="cclib", - version="0.1.2", + version="0.1", author="Noel O'Boyle", author_email="bao...@us...", - url="http://gausssum.sf.net", - scripts=['src/gausssum/gausssum.py'], + url="http://cclib.sourceforge.net", package_dir = {'cclib':'src/cclib'}, packages=['cclib']) Modified: trunk/src/cclib/parser.py =================================================================== --- trunk/src/cclib/parser.py 2006-03-05 22:18:59 UTC (rev 2) +++ trunk/src/cclib/parser.py 2006-03-06 10:33:31 UTC (rev 3) @@ -53,7 +53,7 @@ def __init__(self,filename): self.filename = filename - def float(number): + def float(self,number): """Convert a string to a float avoiding the problem with Ds.""" number = number.replace("D","E") return float(number) @@ -78,7 +78,11 @@ SCFRMS,SCFMAX,SCFENERGY = range(3) # Used to index self.scftarget[] def __init__(self,filename): - # Set up the logger... + # Call the __init__ method of the superclass + super(G03, self).__init__(filename) + + # Set up the logger...will move this into superclass + # through a function call with G03 as a parameter. # Note: all loggers with the same name share the logger. # Here, loggers with different filenames are different self.logger = logging.getLogger('G03.%s' % self.filename) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-03-07 09:56:24
|
Revision: 7 Author: baoilleach Date: 2006-03-07 01:56:19 -0800 (Tue, 07 Mar 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=7&view=rev Log Message: ----------- Rearrangement of file structure. Modified Paths: -------------- trunk/setup.py Removed Paths: ------------- trunk/src/cclib/parser.py Modified: trunk/setup.py =================================================================== --- trunk/setup.py 2006-03-07 09:52:22 UTC (rev 6) +++ trunk/setup.py 2006-03-07 09:56:19 UTC (rev 7) @@ -5,4 +5,4 @@ author_email="bao...@us...", url="http://cclib.sourceforge.net", package_dir = {'cclib':'src/cclib'}, - packages=['cclib']) + packages=['cclib','cclib.parser']) Deleted: trunk/src/cclib/parser.py =================================================================== --- trunk/src/cclib/parser.py 2006-03-07 09:52:22 UTC (rev 6) +++ trunk/src/cclib/parser.py 2006-03-07 09:56:19 UTC (rev 7) @@ -1,541 +0,0 @@ -""" -cclib is a parser for computational chemistry log files. - -See http://cclib.sf.net for more information. - -Copyright (C) 2006 Noel O'Boyle and Adam Tenderholt - - This program is free software; you can redistribute and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any later - version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY, without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - -Contributions (monetary as well as code :-) are encouraged. -""" -import math,sys,logging,copy,re,os,time # How many of these are necessary? -import Numeric - -def convertor(value,fromunits,tounits): - """Convert from one set of units to another. - - >>> convertor(8,"eV","cm-1") - 64000 - """ - _convertor = {"eV_to_cm-1": lambda x: x*8065.6, - "nm_to_cm-1": lambda x: 1e7/x, - "cm-1_to_nm": lambda x: 1e7/x} - - return _convertor["%s_to_%s" % (fromunits,tounits)] (value) - -class PeriodicTable(object): - """Allows conversion between element name and atomic no. - - >>> t = PeriodicTable() - >>> t.element[6] - 'C' - >>> t.number['C'] - 6 - """ - def __init__(self): - self.element = [None,"H","He","Li","Be","B","C","N","O","F","Ne"] - self.number = {} - for i in range(1,len(self.element)): - self.number[self.element[i]] = i - -class Logfile(object): - """Abstract class that contains the methods that act on data - parsed from various types of logfile.""" - def __init__(self,filename): - self.filename = filename - - def float(self,number): - """Convert a string to a float avoiding the problem with Ds.""" - number = number.replace("D","E") - return float(number) - -class G03(Logfile): - """A Gaussian 03 log file - - Attributes: - filename -- the name of the log file - logger -- a logging object - NAtoms -- the number of atoms in the molecule - atomicNo[] -- the atomic numbers of the atoms - - scfenergy[] -- the SCF energies - - Class Methods: - float(a) -- convert a string to a float - - Methods: - parse() -- extract general info from the logfile - """ - SCFRMS,SCFMAX,SCFENERGY = range(3) # Used to index self.scftarget[] - def __init__(self,filename): - - # Call the __init__ method of the superclass - super(G03, self).__init__(filename) - - # Set up the logger...will move this into superclass - # through a function call with G03 as a parameter. - # Note: all loggers with the same name share the logger. - # Here, loggers with different filenames are different - self.logger = logging.getLogger('G03.%s' % self.filename) - self.logger.setLevel(logging.INFO) - handler = logging.StreamHandler(sys.stdout) - handler.setFormatter(logging.Formatter("[%(name)s %(levelname)s] %(message)s")) - self.logger.addHandler(handler) - - def __str__(self): - """Return a string representation of the object.""" - return "Gaussian 03 log file %s" % (self.filename) - - def __repr__(self): - """Return a representation of the object.""" - return 'G03("%s")' % (self.filename) - - def parse(self): - """Extract general info from the logfile. - - Creates the following instance attributes: - NAtoms, atomicNo[], - scfProgress[], SCF_target_rms, SCF_target_energy, SCF_target_max, - geoProgress[], scfenergy[] - evalue [[]] - """ - inputfile = open(self.filename,"r") - for line in inputfile: - - if line[1:8]=="NAtoms=": -# Find the number of atoms - NAtoms = int(line.split()[1]) - if hasattr(self,"NAtoms"): - assert self.NAtoms==NAtoms - else: - # I wonder whether this code will ever be executed - self.NAtoms = NAtoms - self.logger.info("Creating attribute NAtoms: %d" % self.NAtoms) - - if not hasattr(self,"atomicNo") and (line.find("Z-Matrix orientation")>=0 - or line[25:45]=="Standard orientation" - or line[26:43]=="Input orientation"): -# Extract the atomic numbers of the atoms - self.logger.info("Creating attribute atomicNo[]") - self.atomicNo = [] - hyphens = inputfile.next() - colmNames = inputfile.next(); colmNames = inputfile.next() - hyphens = inputfile.next() - line = inputfile.next() - while line!=hyphens: - self.atomicNo.append(int(line.split()[1])) - line = inputfile.next() - NAtoms = len(self.atomicNo) - if hasattr(self,"NAtoms"): - assert self.NAtoms==NAtoms - else: - self.NAtoms = NAtoms - self.logger.info("Creating attribute NAtoms: %d" % self.NAtoms) - - -# Find the targets for the SCF convergence (QM calcs) -# We assume that the targets don't change, although it's -# easy enough to store all of the targets - if line[1:44]=='Requested convergence on RMS density matrix': - if not hasattr(self,"scftarget"): - self.logger.info("Creating attribute scftarget[]") - self.scftarget = [None]*3 - self.scftarget[G03.SCFRMS] = self.float(line.split('=')[1].split()[0]) - if line[1:44]=='Requested convergence on MAX density matrix': - self.scftarget[G03.SCFMAX] = self.float(line.strip().split('=')[1][:-1]) - if line[1:44]=='Requested convergence on energy': - self.scftarget[G03.SCFENERGY] = self.float(line.strip().split('=')[1][:-1]) - - if line[1:10]=='Cycle 1': -# Extract SCF convergence information (QM calcs) - if not hasattr(self,"scfvalue"): - self.logger.info("Creating attribute scfvalue[[]]") - self.scfvalue = [] - newlist = [ [] for x in self.scftarget ] - line = inputfile.next() - while line.find("SCF Done")==-1: - if line.find(' E=')==0: - self.logger.debug(line) - if line.find(" RMSDP")==0: - parts = line.split() - newlist[G03.SCFRMS].append(self.float(parts[0].split('=')[1])) - newlist[G03.SCFMAX].append(self.float(parts[1].split('=')[1])) - energy = 1.0 - if len(parts)>4: - energy = parts[2].split('=')[1] - if energy=="": - energy = self.float(parts[3]) - else: - energy = self.float(energy) - # I moved the following line back a TAB to see the effect - # (it was originally part of the above "if len(parts)") - newlist[G03.SCFENERGY].append(energy) - self.logger.debug(line) - try: - line = inputfile.next() - except StopIteration: # May be interupted by EOF - break - self.scfvalue.append(newlist) - - if line[1:4]=='It=': -# Extract SCF convergence information (AM1 calcs) - self.logger.info("Creating attributes scftarget[],scfvalue[[]]") - self.scftarget = [1E-7] # This is the target value for the rms - self.scfvalue = [[]] - line = inputfile.next() - while line.find(" Energy")==-1: - self.logger.debug(line) - parts = line.strip().split() - self.scfvalue[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 extract SCF convergence information - self.logger.debug(line) - self.logger.debug("SCF Done") - if hasattr(self,"scfenergy"): - self.scfenergy.append(line.split()[4]) - else: - self.scfenergy = [line.split()[4]] - self.logger.info("Creating attribute scfenergy[]") - - if line[49:59]=='Converged?': -# Extract Geometry convergence information - if not hasattr(self,"geotarget"): - self.logger.info("Creating attributes geotarget[],geovalue[[]]") - self.geovalue = [] - self.geotarget = [None]*4 - 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.geotarget[i] = self.float(parts[3]) - self.geovalue.append(newlist) - - if line[1:19]=='Orbital symmetries' and not hasattr(self,"orbsym"): -# Extracting orbital symmetries - self.logger.info("Creating attribute orbsym[[]]") - self.orbsym = [[]] - 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.HOMO = [i-1] # 'HOMO' indexes the HOMO in the arrays - self.logger.info("Creating attribute HOMO[]") - parts = line[17:].split() - for x in parts: - self.orbsym[0].append(x.strip('()')) - i+= 1 - line = inputfile.next() - if unres: - line = inputfile.next() - # Repeat with beta orbital information - i = 0 - self.orbsym.append([]) - while len(line)>18 and line[17]=='(': - if line.find('Virtual')>=0: - self.HOMO.append(i-1) # 'HOMO' indexes the HOMO in the arrays - parts = line[17:].split() - for x in parts: - self.orbsym[1].append(x.strip('()')) - i+= 1 - line = inputfile.next() - - if line[1:6]=="Alpha" and line.find("eigenvalues")>=0: -# Extract the alpha electron eigenvalues - self.logger.info("Creating attribute evalue[[]]") - self.evalue = [[]] - 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.evalue[0])-1 - if hasattr(self,"HOMO"): - assert HOMO==self.HOMO[0] - else: - self.logger.info("Creating attribute HOMO[]") - self.HOMO = [HOMO] - part = line[28:] - i = 0 - while i*10+4<len(part): - x = part[i*10:(i+1)*10] - self.evalue[0].append(self.float(x)*27.2114) # from a.u. (hartrees) to eV - i += 1 - line = inputfile.next() - if line.find('Beta')==2: - self.evalue.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.evalue[1])-1 - if len(self.HOMO)==2: - # It already has a self.HOMO (with the Alpha value) - # but does it already have a Beta value? - assert HOMO==self.HOMO[1] - else: - self.HOMO.append(HOMO) - part = line[28:] - i = 0 - while i*10+4<len(part): - x = part[i*10:(i+1)*10] - self.evalue[1].append(self.float(x)*27.2114) # from a.u. (hartrees) to eV - i += 1 - line = inputfile.next() - - if line[1:14]=="Harmonic freq": -# Start of the IR/Raman frequency section - self.vibsym = [] - self.ir = [] - self.vibfreq = [] - self.logger.info("Creating attribute vibsym[]") - self.logger.info("Creating attribute vibfreq[]") - self.logger.info("Creating attribute ir[]") - 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.vibsym.extend(line.split()) # Adding new symmetry - line = inputfile.next() - self.vibfreq.extend(map(self.float,line[15:].split())) # Adding new frequencies - [inputfile.next() for i in [0,1]] # Skip two lines - line = inputfile.next() - self.ir.extend(map(self.float,line[15:].split())) # Adding IR intensities - line = inputfile.next() - if line.find("Raman")>=0: - if not hasattr(self,"raman"): - self.raman = [] - self.logger.info("Creating attribute raman[]") - line = inputfile.next() - self.raman.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 - - if line[1:14]=="Excited State": -# Extract the electronic transitions - if not hasattr(self,"etenergy"): - self.etenergy = [] - self.etwavelen = [] - self.etosc = [] - self.etsym = [] - self.etcis = [] - self.logger.info("Creating attributes etenergy[], etwavelen[], etosc[], etsym[], etcis[]") - # Need to deal with lines like: - # (restricted calc) - # Excited State 1: Singlet-BU 5.3351 eV 232.39 nm f=0.1695 - # (unrestricted calc) (first excited state is 2!) - # Excited State 2: ?Spin -A 0.1222 eV 10148.75 nm f=0.0000 - parts = line[36:].split() - self.logger.debug(parts) - self.etenergy.append(convertor(self.float(parts[0]),"eV","cm-1")) - self.etwavelen.append(self.float(parts[2])) - self.etosc.append(self.float(parts[4].split("=")[1])) - self.etsym.append(line[21:36].split()) - - line = inputfile.next() - - p = re.compile("(\d+)") - CIScontrib = [] - while line.find(" ->")>=0: # This is a contribution to the transition - parts = line.split("->") - self.logger.debug(parts) - # Has to deal with lines like: - # 32 -> 38 0.04990 - # 35A -> 45A 0.01921 - frommoindex = 0 # For restricted or alpha unrestricted - fromMO = parts[0].strip() - if fromMO[-1]=="B": - frommoindex = 1 # For beta unrestricted - fromMO = int(p.match(fromMO).group()) # extract the number - - t = parts[1].split() - tomoindex = 0 - toMO = t[0] - if toMO[-1]=="B": - tomoindex = 1 - toMO = int(p.match(toMO).group()) - - percent = self.float(t[1]) - sqr = percent**2*2 # The fractional contribution of this CI - if percent<0: - sqr = -sqr - CIScontrib.append([(fromMO,frommoindex),(toMO,tomoindex),sqr]) - line = inputfile.next() - self.etcis.append(CIScontrib) - - - if line[1:52]=="<0|r|b> * <b|rxdel|0> (Au), Rotatory Strengths (R)": -# Extract circular dichroism data - self.rotatory = [] - self.logger.info("Creating attribute rotatory[]") - inputfile.next() - inputfile.next() - line = inputfile.next() - parts = line.strip().split() - while len(parts)==5: - try: - R = self.float(parts[-1]) - except ValueError: - # nan or -nan if there is no first excited state - # (for unrestricted calculations) - pass - else: - self.rotatory.append(R) - line = inputfile.next() - temp = line.strip().split() - parts = line.strip().split() - - if line[1:7]=="NBasis" or line[4:10]=="NBasis": -# Extract the number of basis sets - NBasis = int(line.split('=')[1].split()[0]) - # Has to deal with lines like: - # NBasis= 434 NAE= 97 NBE= 97 NFC= 34 NFV= 0 - # NBasis = 148 MinDer = 0 MaxDer = 0 - # Although the former is in every file, it doesn't occur before - # the overlap matrix is printed - if hasattr(self,"NBasis"): - assert NBasis==self.NBasis - else: - self.NBasis = NBasis - self.logger.info("Creating attribute NBasis: %d" % self.NBasis) - - if line[1:7]=="NBsUse": -# Extract the number of linearly-independent basis sets - NBsUse = int(line.split('=')[1].split()[0]) - if hasattr(self,"NBsUse"): - assert NBsUse==self.NBsUse - else: - self.NBsUse = NBsUse - self.logger.info("Creating attribute NBsUse: %d" % self.NBsUse) - - if line[7:22]=="basis functions,": -# For AM1 calculations, set NBasis by a second method -# (NBsUse may not always be explicitly stated) - NBasis = int(line.split()[0]) - if hasattr(self,"NBasis"): - assert NBasis==self.NBasis - else: - self.NBasis = NBasis - self.logger.info("Creating attribute NBasis: %d" % self.NBasis) - - if line[1:4]=="***" and (line[5:12]=="Overlap" - or line[8:15]=="Overlap"): -# Extract the molecular orbital overlap matrix - # Has to deal with lines such as: - # *** Overlap *** - # ****** Overlap ****** - self.logger.info("Creating attribute overlap[x,y]") - import time; oldtime = time.time() - self.overlap = Numeric.zeros( (self.NBasis,self.NBasis), "float") - # Overlap integrals for basis fn#1 are in overlap[0] - base = 0 - colmNames = inputfile.next() - while base<self.NBasis: - for i in range(self.NBasis-base): # Fewer lines this time - line = inputfile.next() - parts = line.split() - for j in range(len(parts)-1): # Some lines are longer than others - k = float(parts[j].replace("D","E")) - self.overlap[base+j,i+base] = k - self.overlap[i+base,base+j] = k - base += 5 - colmNames = inputfile.next() - self.logger.info("Took %f seconds" % (time.time()-oldtime)) - - if line[5:35]=="Molecular Orbital Coefficients" or line[5:41]=="Alpha Molecular Orbital Coefficients" or line[5:40]=="Beta Molecular Orbital Coefficients": - import time; oldtime = time.time() - if line[5:40]=="Beta Molecular Orbital Coefficients": - beta = True - # Need to add an extra dimension to self.mocoeff - self.mocoeff = Numeric.resize(self.mocoeff,(2,NBsUse,NBasis)) - else: - beta = False - self.logger.info("Creating attributes orbitals[], mocoeff[][]") - self.orbitals = [] - self.mocoeff = Numeric.zeros((NBsUse,NBasis),"float") - - base = 0 - for base in range(0,NBsUse,5): - colmNames = inputfile.next() - 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 - parts = line[:11].split() - if len(parts)>1: # New atom - atomname = "%s%s" % (parts[2],parts[1]) - orbital = line[11:20].strip() - self.orbitals.append("%s_%s" % (atomname,orbital)) - - part = line[21:].replace("D","E").rstrip() - temp = [] - for j in range(0,len(part),10): - temp.append(float(part[j:j+10])) - if beta: - self.mocoeff[1,base:base+len(part)/10,i] = temp - else: - self.mocoeff[base:base+len(part)/10,i] = temp - self.logger.info("Took %f seconds" % (time.time()-oldtime)) - - - inputfile.close() - -# Note to self: Needs to be added to the main parser - def extractTrajectory(self): - """Extract trajectory information from a Gaussian logfile.""" - inputfile = open(self.filename,"r") - self.traj = [] - self.trajSummary = [] - for line in inputfile: - if line.find(" Cartesian coordinates:")==0: - coords = [] - for i in range(self.NAtoms): - line = inputfile.next() - parts = line.strip().split() - # Conversion from a.u. to Angstrom - coords.append([ self.float(x)*0.5292 for x in [parts[3],parts[5],parts[7]] ]) - self.traj.append(coords) - if line==" Trajectory summary\n": - # self.trajSummaryHeader = inputfile.next().strip().split() - header = inputfile.next() - line = inputfile.next() - while line.find("Max Error")==-1: - parts = line.strip().split(" ") - self.trajSummary.append(parts) - line = inputfile.next() - inputfile.close() - assert len(self.traj)==len(self.trajSummary) - -if __name__=="__main__": - import doctest,parser - doctest.testmod(parser,verbose=False) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ate...@us...> - 2006-05-10 21:56:53
|
Revision: 106 Author: atenderholt Date: 2006-05-10 14:56:50 -0700 (Wed, 10 May 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=106&view=rev Log Message: ----------- Added __init__.pys and some work on density, still need to rename methods to method, but don't want to --force svn. Modified Paths: -------------- trunk/setup.py trunk/src/cclib/__init__.py trunk/src/cclib/methods/density.py Added Paths: ----------- trunk/src/cclib/methods/__init__.py Modified: trunk/setup.py =================================================================== --- trunk/setup.py 2006-05-10 19:29:45 UTC (rev 105) +++ trunk/setup.py 2006-05-10 21:56:50 UTC (rev 106) @@ -5,4 +5,4 @@ author_email="bao...@us...", url="http://cclib.sourceforge.net", package_dir = {'cclib':'src/cclib'}, - packages=['cclib','cclib.parser','cclib.progress']) + packages=['cclib','cclib.parser','cclib.progress','cclib.method']) Modified: trunk/src/cclib/__init__.py =================================================================== --- trunk/src/cclib/__init__.py 2006-05-10 19:29:45 UTC (rev 105) +++ trunk/src/cclib/__init__.py 2006-05-10 21:56:50 UTC (rev 106) @@ -1,2 +1,3 @@ import parser import progress +import method Added: trunk/src/cclib/methods/__init__.py =================================================================== --- trunk/src/cclib/methods/__init__.py (rev 0) +++ trunk/src/cclib/methods/__init__.py 2006-05-10 21:56:50 UTC (rev 106) @@ -0,0 +1 @@ +from density import Density Modified: trunk/src/cclib/methods/density.py =================================================================== --- trunk/src/cclib/methods/density.py 2006-05-10 19:29:45 UTC (rev 105) +++ trunk/src/cclib/methods/density.py 2006-05-10 21:56:50 UTC (rev 106) @@ -60,13 +60,15 @@ else: self.density=Numeric.zeros([1,size,size],"f") - for i in range(self.parser.homos[0]+1): - col=Numeric.reshape(self.parser.mocoeffs[0][i],(size,1)) - colt=Numeric.reshape(col,(1,size)) + for spin in range(len(self.parser.mocoeffs)): - tempdensity=Numeric.matrixmultipy(col,colt) - density[0]=Numeric.add(density[0],tempdensity) + for i in range(self.parser.homos[spin]+1): + col=Numeric.reshape(self.parser.mocoeffs[spin][i],(size,1)) + colt=Numeric.reshape(col,(1,size)) + tempdensity=Numeric.matrixmultipy(col,colt) + density[spin]=Numeric.add(density[spin],tempdensity) + if __name__=="__main__": import doctest,g03parser doctest.testmod(g03parser,verbose=False) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-07-12 10:37:58
|
Revision: 237 Author: baoilleach Date: 2006-07-12 03:37:40 -0700 (Wed, 12 Jul 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=237&view=rev Log Message: ----------- Bug fix: Mo4OSibdt2-opt.log has no atomcoords despite being a geo-opt. This was due to the fact that the parser was extracting "Input orientation" and not "Standard orientation". It's now changed to "Standard orientation" which works for all of the files in the repository. Added regression test. Added directory Gaussian03 to data/Gaussian and told SVN to ignore it. Edited the logfiledist so that it will include this folder when create the logfile distribution. Modified Paths: -------------- trunk/logfiledist trunk/src/cclib/parser/gaussianparser.py trunk/test/regression.py Property Changed: ---------------- trunk/data/Gaussian/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-07-16 15:21:29
|
Revision: 239 Author: baoilleach Date: 2006-07-16 08:21:15 -0700 (Sun, 16 Jul 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=239&view=rev Log Message: ----------- Changed version number from 0.5b to 0.5. Replaced the LICENSE file with the LGPL. Updated Trove classifiers. Modified Paths: -------------- trunk/ANNOUNCE trunk/LICENSE trunk/setup.py trunk/src/cclib/__init__.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-08-29 11:00:36
|
Revision: 328 Author: baoilleach Date: 2006-08-29 04:00:22 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/cclib/?rev=328&view=rev Log Message: ----------- Importing a script to download the text from the wiki, and also importing the SVG source of the logo (use Inkscape to view) Added Paths: ----------- trunk/downloadwiki.py trunk/logo_for_ccl.svg This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-09-14 19:29:50
|
Revision: 339 http://svn.sourceforge.net/cclib/?rev=339&view=rev Author: baoilleach Date: 2006-09-14 12:29:41 -0700 (Thu, 14 Sep 2006) Log Message: ----------- Made change to manifest.py and hence to MANIFEST to include the unit tests and basic datafiles in the distribution. Modified Paths: -------------- trunk/MANIFEST trunk/manifest.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-09-15 07:12:33
|
Revision: 340 http://svn.sourceforge.net/cclib/?rev=340&view=rev Author: baoilleach Date: 2006-09-15 00:12:22 -0700 (Fri, 15 Sep 2006) Log Message: ----------- ANNOUCE, CHANGELOG, THANKS, INSTALL, README, setup.py, __init__.py updated for cclib 0.6 Modified Paths: -------------- trunk/ANNOUNCE trunk/CHANGELOG trunk/INSTALL trunk/README trunk/THANKS trunk/setup.py trunk/src/cclib/__init__.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bou...@us...> - 2006-09-27 08:19:41
|
Revision: 350 http://svn.sourceforge.net/cclib/?rev=350&view=rev Author: bounouar Date: 2006-09-27 01:19:31 -0700 (Wed, 27 Sep 2006) Log Message: ----------- Molpro can now parse atomic masses after a freq calculation Modified Paths: -------------- trunk/data/Molpro/basicMolpro2006/dvb_ir.out trunk/src/cclib/parser/molproparser.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-10-04 08:34:45
|
Revision: 363 http://svn.sourceforge.net/cclib/?rev=363&view=rev Author: baoilleach Date: 2006-10-04 01:34:33 -0700 (Wed, 04 Oct 2006) Log Message: ----------- Final updates before cclib-0.6b release. Updated ANNOUNCE, __init__.py and setup.py with version number. Updated THANKS with Adam Swanson, who reported a Gaussian parser bug (which has been fixed). Modified Paths: -------------- trunk/ANNOUNCE trunk/THANKS trunk/setup.py trunk/src/cclib/__init__.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ate...@us...> - 2006-10-11 05:13:11
|
Revision: 367 http://svn.sourceforge.net/cclib/?rev=367&view=rev Author: atenderholt Date: 2006-10-10 22:13:08 -0700 (Tue, 10 Oct 2006) Log Message: ----------- Gaussian: (Bug fix) Parser input orientation; if standard orientation isn't found, use input orientation for atomnos and atomcoords. Fixes one of the errors for dvb_un_sp.out. Also updated the regression test for dvb_un_sp.out so that it checks that there are 20 entries in atomnos, and the shape of the atomcoords is (1,20,3) for one structure, twenty atoms, and the x/y/z in points. Modified Paths: -------------- trunk/src/cclib/parser/gaussianparser.py trunk/test/regression.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-10-26 08:51:53
|
Revision: 390 http://svn.sourceforge.net/cclib/?rev=390&view=rev Author: baoilleach Date: 2006-10-26 01:51:39 -0700 (Thu, 26 Oct 2006) Log Message: ----------- Updated __init__.py, setup.py, THANKS, ANNOUNCE, README to get ready for the cclib 0.6 final release. Modified Paths: -------------- trunk/ANNOUNCE trunk/README trunk/THANKS trunk/setup.py trunk/src/cclib/__init__.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-11-07 11:25:21
|
Revision: 403 http://svn.sourceforge.net/cclib/?rev=403&view=rev Author: baoilleach Date: 2006-11-07 03:24:58 -0800 (Tue, 07 Nov 2006) Log Message: ----------- Moved file: In preparation for editing logfiledist, I've moved it into the data directory, where it will live beside regressionfiles.txt (which it will use). Added Paths: ----------- trunk/data/logfiledist Removed Paths: ------------- trunk/logfiledist This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-11-13 18:51:32
|
Revision: 407 http://svn.sourceforge.net/cclib/?rev=407&view=rev Author: baoilleach Date: 2006-11-08 12:42:14 -0800 (Wed, 08 Nov 2006) Log Message: ----------- Bugfix to Gaussian parser: water_zmatrix_nosym now parses and passes the regression test. Also included is a bug fix to the regression test for this file. Modified Paths: -------------- trunk/src/cclib/parser/gaussianparser.py trunk/test/regression.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-11-22 09:25:37
|
Revision: 419 http://svn.sourceforge.net/cclib/?rev=419&view=rev Author: baoilleach Date: 2006-11-22 01:25:33 -0800 (Wed, 22 Nov 2006) Log Message: ----------- Release prep: Getting ready for cclib-0.6.1 release. Have updated THANKS, CHANGELOG, ANNOUNCE and the version numbers in setup.py and __init__.py. Modified Paths: -------------- trunk/ANNOUNCE trunk/CHANGELOG trunk/THANKS trunk/setup.py trunk/src/cclib/__init__.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-11-26 10:59:13
|
Revision: 422 http://svn.sourceforge.net/cclib/?rev=422&view=rev Author: baoilleach Date: 2006-11-26 02:59:06 -0800 (Sun, 26 Nov 2006) Log Message: ----------- Reverted r409 to r415. Returning to original definition of nmo. (Instead, we are going to redefine mocoeffs) Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py trunk/src/cclib/parser/gamessparser.py trunk/src/cclib/parser/gamessukparser.py trunk/src/cclib/parser/gaussianparser.py trunk/src/cclib/parser/jaguarparser.py trunk/test/testGeoOpt.py trunk/test/testSP.py trunk/test/testSPun.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-11-29 20:13:38
|
Revision: 430 http://svn.sourceforge.net/cclib/?rev=430&view=rev Author: baoilleach Date: 2006-11-29 12:13:36 -0800 (Wed, 29 Nov 2006) Log Message: ----------- (1) Adding new data to test the ability of GAMESS parser to handle linear molecules (2) GAMESS parser now removes rotations and translations (3) Added new tests to testvib.py for various vibration attributes. Note to self: add test to make sure we're all using the same units. Modified Paths: -------------- trunk/src/cclib/parser/gamessparser.py trunk/test/testvib.py Added Paths: ----------- trunk/data/GAMESS/basicPCGAMESS/CN_ir.in trunk/data/GAMESS/basicPCGAMESS/CN_ir.out This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-12-01 10:17:31
|
Revision: 433 http://svn.sourceforge.net/cclib/?rev=433&view=rev Author: baoilleach Date: 2006-12-01 02:17:28 -0800 (Fri, 01 Dec 2006) Log Message: ----------- API change moenergies: Changing moenergies from a rank 2 Numeric array to a list of rank 1 arrays. For the ADF moenergies, removed the requirement that it be of length nbasis. Did GAMESS, GAMESSUK, Gaussian, ADF. Jaguar here we come! Modified Paths: -------------- trunk/src/cclib/parser/adfparser.py trunk/src/cclib/parser/gamessparser.py trunk/src/cclib/parser/gamessukparser.py trunk/src/cclib/parser/gaussianparser.py trunk/test/testGeoOpt.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-12-01 13:19:59
|
Revision: 434 http://svn.sourceforge.net/cclib/?rev=434&view=rev Author: baoilleach Date: 2006-12-01 05:19:48 -0800 (Fri, 01 Dec 2006) Log Message: ----------- API updates: In relation to definition of moenergies, fixed testall.py, testSPun.py and jaguarparser.py. Jaguar: Type of homos array "i" wasn't specified. TestSP: Now tests a Jaguar6.0 file containing mocoeffs; none of the 4.5 or 6.5 files do. Modified Paths: -------------- trunk/src/cclib/parser/jaguarparser.py trunk/test/testSP.py trunk/test/testSPun.py trunk/test/testall.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-12-05 08:09:36
|
Revision: 435 http://svn.sourceforge.net/cclib/?rev=435&view=rev Author: baoilleach Date: 2006-12-05 00:09:28 -0800 (Tue, 05 Dec 2006) Log Message: ----------- API Change: mocoeffs is now a list of arrays. I've updated the unit tests, and two of the parsers (Gamess, Gaussian). Modified Paths: -------------- trunk/src/cclib/parser/gamessparser.py trunk/src/cclib/parser/gaussianparser.py trunk/test/testSP.py trunk/test/testSPun.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-12-05 09:27:56
|
Revision: 436 http://svn.sourceforge.net/cclib/?rev=436&view=rev Author: baoilleach Date: 2006-12-05 01:27:51 -0800 (Tue, 05 Dec 2006) Log Message: ----------- mocoeffs: Updated for gamessuk and jaguar (to some extent). Needed to update the tests for gamessuk. Modified Paths: -------------- trunk/src/cclib/parser/gamessukparser.py trunk/src/cclib/parser/jaguarparser.py trunk/test/testSPun.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-12-07 12:20:30
|
Revision: 439 http://svn.sourceforge.net/cclib/?rev=439&view=rev Author: baoilleach Date: 2006-12-07 04:20:06 -0800 (Thu, 07 Dec 2006) Log Message: ----------- Removed Molpro references as it's all now on a branch. Modified Paths: -------------- trunk/src/cclib/parser/__init__.py trunk/src/cclib/parser/logfileparser.py trunk/src/cclib/parser/utils.py trunk/test/testGeoOpt.py trunk/test/testall.py Removed Paths: ------------- trunk/data/Molpro/ trunk/src/cclib/parser/molproparser.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-12-08 14:32:57
|
Revision: 444 http://svn.sourceforge.net/cclib/?rev=444&view=rev Author: baoilleach Date: 2006-12-08 06:32:49 -0800 (Fri, 08 Dec 2006) Log Message: ----------- Following from a reply to my question on the GAMESS users list, I've converted the IR intensity units into km/mol. Modified Paths: -------------- trunk/src/cclib/parser/gamessparser.py trunk/src/cclib/parser/utils.py trunk/test/testvib.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bao...@us...> - 2006-12-10 19:32:06
|
Revision: 447 http://svn.sourceforge.net/cclib/?rev=447&view=rev Author: baoilleach Date: 2006-12-10 11:31:57 -0800 (Sun, 10 Dec 2006) Log Message: ----------- Added tests for vibramans, and fixed any problems arising. Specifically, GAMESSUK wasn't extracting raman data, and GAMESS had 3N instead of 3N-6. Modified Paths: -------------- trunk/src/cclib/parser/gamessparser.py trunk/src/cclib/parser/gamessukparser.py trunk/test/testvib.py This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ate...@us...> - 2007-01-24 19:21:44
|
Revision: 469 http://svn.sourceforge.net/cclib/?rev=469&view=rev Author: atenderholt Date: 2007-01-24 11:21:21 -0800 (Wed, 24 Jan 2007) Log Message: ----------- CDA script: Minor bug and nicety fixes, and added it to the setup.py script Modified Paths: -------------- trunk/setup.py trunk/src/scripts/cda This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |