From: Adam T. <ate...@gm...> - 2012-02-25 21:17:51
|
Hi Frank, Thanks for hunting down this problem and letting us know about it. Since your code will only handle up to 199 atoms, I'll modify it a bit to make it more flexible. Unfortunately, without a proper test file, I have no way of ensuring it works. Thanks again, Adam On Feb 18, 2012, at 2:46 PM, Frank wrote: > Hi, folks. > > I finally nailed it down. > > Here is the root problem: cclib (the current released version) cannot parse the log file of system with natom >= 100. > > In the log file for the Eigenvalues/MOs: > 518 H 98 S -0.000000 0.000000 -0.000000 -0.000000 -0.000000 > 519 C 99 S -0.000000 0.000000 -0.000000 -0.000000 -0.000000 > 520 C 99 S -0.000000 0.000000 -0.000000 -0.000000 -0.000000 > 521 C 99 X -0.000000 0.000000 -0.000000 -0.000000 -0.000000 > 522 C 99 Y -0.000000 0.000000 -0.000000 -0.000000 -0.000000 > 523 C 99 Z -0.000000 0.000000 -0.000000 -0.000000 -0.000000 > 524 H 0 S -0.000000 0.000000 -0.000000 -0.000000 -0.000000 > 525 H 1 S -0.000000 0.000000 -0.000000 -0.000000 -0.000000 > 526 C 2 S -0.000000 0.000000 -0.000000 -0.000000 -0.000000 > > The number of atoms are recorded as 0, 1, ..., instead of 100/200/..., 101/201/..., which is however problematic in calculating CSPA. > > My resolution is: introducing a switch to monitor this change. The corresponding code, in gamessparser.py is partially copied in the following: > > LINE 714: > p = re.compile("(\d+)\s*([A-Z][A-Z]?)\s*(\d+)\s*([A-Z]+)") > oldatom ='0' > i_atom = 0 #couter to translate to 0s to some hundreds, by C.W. > flag_w = True #Flag to whether > for i in range(self.nbasis): > line = inputfile.next() > > # If line is empty, break (ex. for FMO in exam37). > if not line.strip(): break > > # Fill atombasis and aonames only first time around > if readatombasis and base == 0: > aonames = [] > start = line[:17].strip() > m = p.search(start) > if m: > g = m.groups() > g2 = int(g[2]) #atom index from GAMESS's log file > if g2 == 0 and flag_w: #c.w. > i_atom = i_atom + 100 #c.w > flag_w = False > if g2 != 0: > flag_w = True > g2 = g2 + i_atom #c.w. > aoname = "%s%s_%s" % (g[1].capitalize(), str(g2), g[3]) #c.w. > # aoname = "%s%s_%s" % (g[1].capitalize(), g[2], g[3]) > oldatom = str(g2) #c.w. > atomno = g2 - 1 #c.w. > # oldatom = g[2] > # atomno = int(g[2])-1 > orbno = int(g[0])-1 > > else: # For F orbitals, as shown above > g = [x.strip() for x in line.split()] > g2 = int(g[2]) #atom index from GAMESS's log file > if g2 == 0 and flag_w: #c.w. > i_atom = i_atom + 100 #c.w. > flag_w = False #c.w. > if g2 != 0: #c.w. > flag_w = True #c.w. > g2 = g2 + i_atom #c.w. > # aoname = "%s%s_%s" % (g[1].capitalize(), oldatom, g[2]) > aoname = "%s%s_%s" % (g[1].capitalize(), oldatom, str(g2)) > atomno = int(oldatom)-1 > orbno = int(g[0])-1 > self.atombasis[atomno].append(orbno) > self.aonames.append(aoname) > coeffs = line[15:] # Strip off the crud at the start. > j = 0 > while j*11+4 < len(coeffs): > self.mocoeffs[0][base+j, i] = float(coeffs[j * 11:(j + 1) * 11]) > j += 1 > > line = inputfile.next() > > Enjoy! > > Best. > > Frank > > On Fri, Jan 13, 2012 at 2:20 AM, Chengju Wang <fra...@gm...> wrote: > Hi, Adam and other folks. > > Attached please find the requested file, which was given by > " > >>> f=open("aonames.txt",'w') > >>> import pickle > >>> pickle.dump(ps.aonames,f) > >>> f.close() > " > following the previous email. > > By tail this file, one will get > " tail aonames.txt > p3711 > aS'H40_S' > p3712 > aS'H40_X' > p3713 > aS'H40_Y' > p3714 > aS'H40_Z' > p3715 > a." > > This file is incomplete. I think this is problem but I don't how to solve it. :P > > thanks for your attention. > > Best. > > Chengju > > > On Wed, Jan 4, 2012 at 3:24 PM, Adam Tenderholt <ate...@gm...> wrote: > Hi Chengju, > > Sorry for the late reply. Your error is a bit odd, and I'm not sure > where the code is failing. Can you send us the aonames parsed by > cclib? If that's not available, send fonames. > > Cheers, > > Adam > > > On Thu, Dec 29, 2011 at 9:30 PM, Chengju Wang > <fra...@gm...> wrote: > > Dear all. > > > > I hope someone here can help me to analysis my GAMESS log file. Thank you. > > > > I tried to use cclib to extract the pdos, but have met with the following > > problem. > > > > >>> from cclib.parser import GAMESS > > >>> from cclib.method import CSPA > > >>> s=GAMESS("test.log") > > >>> ps=s.parse() > > [GAMESS test.log INFO] Creating attribute atomcoords[] > > [GAMESS test.log INFO] Creating attribute atomnos[] > > [GAMESS test.log INFO] Creating attribute gbasis[] > > [GAMESS test.log INFO] Creating attribute nbasis: 2343 > > [GAMESS test.log INFO] Creating attribute charge: 0 > > [GAMESS test.log INFO] Creating attribute mult: 1 > > [GAMESS test.log INFO] Creating attribute homos[] > > [GAMESS test.log INFO] Creating attribute natom: 340 > > [GAMESS test.log INFO] Creating attribute aooverlaps[] > > [GAMESS test.log INFO] Creating attribute scftargets[] > > [GAMESS test.log INFO] Creating attribute scfvalues[] > > [GAMESS test.log INFO] Creating attribute scfenergies[] > > [GAMESS test.log INFO] Creating attribute moenergies[] > > [GAMESS test.log INFO] Creating attribute mosyms[] > > [GAMESS test.log INFO] Creating attribute nmo: 2343 > > [GAMESS test.log INFO] Creating attribute mocoeffs[] > > [GAMESS test.log INFO] Creating attribute atombasis[] > > [GAMESS test.log INFO] Creating attribute aonames[] > > [GAMESS test.log INFO] Creating attribute coreelectrons[] > > >>> m=CSPA(ps) > > >>>>>> len(m.fragresults[0]) > > 2343 > > >>> len(m.fragresults[0][0]) > > 204 > > > > Why is it not 340 here? > > > > > > Sorry, the log file is too big to be attached. > > > > > > My input key words: > > > > $CONTRL SCFTYP=RHF RUNTYP=ENERGY MAXIT=60 MULT=1 $END > > $CONTRL MOLPLT=.TRUE. PLTORB=.TRUE. NPRINT=3 $END > > $SYSTEM TIMLIM=525600 MWORDS=9000 $END > > $BASIS GBASIS=N31 NGAUSS=6 NDFUNC=1 $END > > $SCF DIRSCF=.TRUE. $END > > $STATPT OPTTOL=0.0001 NSTEP=2000 $END > > $DATA > > > > There is no such problem found for my testing runs on smaller systems > > (~100), i.e.: len(m.fragresults[0][0] always equals to natom. > > > > > > > > ------------------------------------------------------------------------------ > > Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex > > infrastructure or vast IT resources to deliver seamless, secure access to > > virtual desktops. With this all-in-one solution, easily deploy virtual > > desktops for less than the cost of PCs and save 60% on VDI infrastructure > > costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox > > _______________________________________________ > > cclib-users mailing list > > ccl...@li... > > https://lists.sourceforge.net/lists/listinfo/cclib-users > > > > |