Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import os
  4. import os.path
  5. import glob
  6. import re
  7.  
  8.  
  9. amberhome = os.environ["AMBERHOME"]
  10. datdir = os.path.join(amberhome, 'dat/leap/parm')
  11. datfiles = glob.glob("%s/*.dat" % datdir)
  12. frcmods = glob.glob("%s/*.frcmod" % datdir) + glob.glob("%s/frcmod.*" % datdir)
  13.  
  14. types = {}
  15. pat = re.compile(r"(...?.?)\s+\d+(?:\.\d*)?\s+(?:\d+\.\d+\s+)?(.*)$")
  16.  
  17. def update_type(f, types, frcmod):
  18. with open(f) as fh:
  19. if frcmod:
  20. for l in fh:
  21. if l.strip() == "MASS":
  22. break
  23. else:
  24. _skip = fh.next()
  25. for l in fh:
  26. if l.strip() == "":
  27. break
  28. parse = pat.match(l)
  29. if parse:
  30. atype = parse.group(1)
  31. comment = parse.group(2).strip()
  32. vals = types.get(atype, [])
  33. vals.append((basefn, comment))
  34. types[atype] = vals
  35. else:
  36. print "Failed to parse file:%s line:%s" % (basefn, repr(l))
  37. return types
  38.  
  39. for f in datfiles:
  40. basefn = os.path.basename(f)
  41. if basefn in ["nucgen.dat"]:
  42. continue
  43. types = update_type(f, types, False)
  44.  
  45. for f in frcmods:
  46. basefn = os.path.basename(f)
  47. if basefn in []:
  48. continue
  49. types = update_type(f, types, True)
  50.  
  51. for k in sorted(types.keys()):
  52. for (fn, comm) in types[k]:
  53. print "%s\t%s\t%s" % (k, fn, comm)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement