Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import os
- import os.path
- import glob
- import re
- amberhome = os.environ["AMBERHOME"]
- datdir = os.path.join(amberhome, 'dat/leap/parm')
- datfiles = glob.glob("%s/*.dat" % datdir)
- frcmods = glob.glob("%s/*.frcmod" % datdir) + glob.glob("%s/frcmod.*" % datdir)
- types = {}
- pat = re.compile(r"(...?.?)\s+\d+(?:\.\d*)?\s+(?:\d+\.\d+\s+)?(.*)$")
- def update_type(f, types, frcmod):
- with open(f) as fh:
- if frcmod:
- for l in fh:
- if l.strip() == "MASS":
- break
- else:
- _skip = fh.next()
- for l in fh:
- if l.strip() == "":
- break
- parse = pat.match(l)
- if parse:
- atype = parse.group(1)
- comment = parse.group(2).strip()
- vals = types.get(atype, [])
- vals.append((basefn, comment))
- types[atype] = vals
- else:
- print "Failed to parse file:%s line:%s" % (basefn, repr(l))
- return types
- for f in datfiles:
- basefn = os.path.basename(f)
- if basefn in ["nucgen.dat"]:
- continue
- types = update_type(f, types, False)
- for f in frcmods:
- basefn = os.path.basename(f)
- if basefn in []:
- continue
- types = update_type(f, types, True)
- for k in sorted(types.keys()):
- for (fn, comm) in types[k]:
- print "%s\t%s\t%s" % (k, fn, comm)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement