ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/utilities/mdShrink
Revision: 2013
Committed: Wed Aug 13 17:21:02 2014 UTC (10 years, 8 months ago) by gezelter
File size: 4082 byte(s)
Log Message:
AUtorev fix

File Contents

# Content
1 #!@PYTHON_EXECUTABLE@
2 """MetaData File Trimmer
3
4 Skips every n frames of an OpenMD dump file and loads it into new dump file
5
6 Usage: mdSplit
7
8 Options:
9 -h, --help show this help
10 -m, --meta-data=... use specified meta-data (.dump) file
11 -o, --output-file=... use specified output file
12 -s, --split-frame=... split every n frames
13
14
15 Example:
16 mdShrink -s 10 -m long.md -o short.md
17
18 """
19
20 __author__ = "Dan Gezelter (gezelter@nd.edu)"
21 __version__ = "$Revision$"
22 __date__ = "$Date$"
23 __copyright__ = "Copyright (c) 2014 by the University of Notre Dame"
24 __license__ = "OpenMD"
25
26 import sys
27 import getopt
28 import string
29 import os
30
31 _haveMDFileName = 0
32 _haveOutFileName = 0
33 _haveSplitFrame = 0
34
35 def usage():
36 print __doc__
37
38 def shrinkFile(mdFileName,outputFileName,skipFrameNumber):
39 mdFile = open(mdFileName, 'r')
40 outFile = open(outputFileName, 'w')
41
42 metaDataFrame = []
43 haveMetaData = 0
44 haveMetaDataEnd = 0
45 # Find OpenMD version info first
46 line = mdFile.readline()
47 while 1:
48 if '<OOPSE version=' in line or '<OpenMD version=' in line:
49 OpenMDversion = line
50 break
51 line = mdFile.readline()
52
53 # Rewind file and find start of MetaData block
54
55 mdFile.seek(0)
56 breakLoop = False
57 line = mdFile.readline()
58
59 while 1:
60 if '<MetaData>' in line:
61 while 2:
62 metaDataFrame.append(line)
63 line = mdFile.readline()
64 if '</MetaData>' in line:
65 metaDataFrame.append(line)
66 breakLoop = True
67 break
68 if breakLoop:
69 break
70 line = mdFile.readline()
71
72 outFile.write(OpenMDversion)
73 for metaline in metaDataFrame:
74 if 'sampleTime' in metaline:
75 metasplit = metaline.split()
76 sampleTime = float(metasplit[2].strip(';'))
77 newSampleTime = sampleTime * int(skipFrameNumber)
78 outFile.write('sampleTime = %10d;\n' % (newSampleTime))
79 else:
80 outFile.write(metaline)
81
82 mdFile.seek(0)
83 framePos = 0
84 foundFrames = 0;
85 line = mdFile.readline()
86 while 1:
87 if '<Snapshot>' in line:
88 foundFrames += 1
89 division,remainder=divmod(foundFrames,int(skipFrameNumber))
90 if (remainder == 0):
91 while not '</Snapshot>' in line:
92 outFile.write(line)
93 line = mdFile.readline()
94 outFile.write(line)
95 line = mdFile.readline()
96 if not line: break
97
98 outFile.write("</OpenMD>")
99 outFile.close()
100 mdFile.close()
101
102
103 def main(argv):
104 try:
105 opts, args = getopt.getopt(argv, "hm:o:s:", ["help", "meta-data=","output-file=","split-frame", ""])
106 except getopt.GetoptError:
107 usage()
108 sys.exit(2)
109 for opt, arg in opts:
110 if opt in ("-h", "--help"):
111 usage()
112 sys.exit()
113 elif opt in ("-m", "--meta-data"):
114 mdFileName = arg
115 global _haveMDFileName
116 _haveMDFileName = 1
117 elif opt in ("-o", "--output-file"):
118 outputFileName = arg
119 global _haveOutFileName
120 _haveOutFileName = 1
121 elif opt in ("-s", "--split-frame"):
122 skipFrameNumber = arg
123 global _haveSplitFrame
124 _haveSplitFrame = 1
125 if (_haveMDFileName != 1):
126 usage()
127 print "No meta-data file was specified"
128 sys.exit()
129 if (_haveOutFileName != 1):
130 usage()
131 print "No output file was specified"
132 sys.exit()
133 if (_haveSplitFrame != 1):
134 usage()
135 print "Frames to split was not specified"
136 sys.exit()
137 shrinkFile(mdFileName,outputFileName,skipFrameNumber);
138
139 if __name__ == "__main__":
140 if len(sys.argv) == 1:
141 usage()
142 sys.exit()
143 main(sys.argv[1:])
144

Properties

Name Value
svn:executable *