ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/applications/utilities/mdSplit
Revision: 3034
Committed: Fri Oct 6 21:29:14 2006 UTC (18 years, 7 months ago) by chuckv
File size: 3458 byte(s)
Log Message:
Added utility to split dump file frames into md files.

File Contents

# Content
1 #!/usr/bin/env python
2 """MD File Splitter
3
4 Splits MD file frames into seperate md files
5
6 Usage: mdSplit
7
8 Options:
9 -h, --help show this help
10 -m, --meta-data=... use specified meta-data (.md) file
11 -s, --split-frame=... split every n frames
12
13
14 Example:
15 mdSplit -m Ar.md
16
17 """
18
19 __author__ = "Charles Vardeman (cvardema@nd.edu)"
20 __version__ = "$Revision: 1.1 $"
21 __date__ = "$Date: 2006-10-06 21:29:14 $"
22 __copyright__ = "Copyright (c) 2006 by the University of Notre Dame"
23 __license__ = "OOPSE"
24
25 import sys
26 import getopt
27 import string
28 import os
29
30
31 _haveMDFileName = 0
32 _haveSplitFrame = 0
33
34
35 def usage():
36 print __doc__
37
38
39 def splitFile(mdFileName,skipFrameNumber):
40 mdFile = open(mdFileName, 'r')
41
42 outfilePrefix,ext = os.path.splitext(mdFileName)
43
44
45
46 metaDataFrame = []
47 haveMetaData = 0
48 haveMetaDataEnd = 0
49 # Find OOPSE version info first
50 line = mdFile.readline()
51 while 1:
52 if '<OOPSE version=' in line:
53 OOPSEversion = line
54 break
55 line = mdFile.readline()
56
57 # Rewind file and find start of MetaData block
58
59 mdFile.seek(0)
60 breakLoop = False
61 line = mdFile.readline()
62
63 while 1:
64 if '<MetaData>' in line:
65 while 2:
66 metaDataFrame.append(line)
67 line = mdFile.readline()
68 if '</MetaData>' in line:
69 metaDataFrame.append(line)
70 breakLoop = True
71 break
72 if breakLoop:
73 break
74 line = mdFile.readline()
75
76
77 mdFile.seek(0)
78 framePos = 0
79 foundFrames = 0;
80 line = mdFile.readline()
81 while 1:
82 if '<Snapshot>' in line:
83 foundFrames += 1
84 division,remainder=divmod(foundFrames,int(skipFrameNumber))
85 if (remainder == 0):
86 outfilename = outfilePrefix + "_" +repr(foundFrames) + ext
87 outFile = open(outfilename,'w')
88 for metaline in metaDataFrame:
89 outFile.write(metaline)
90 while not '</Snapshot>' in line:
91 outFile.write(line)
92 line = mdFile.readline()
93 outFile.write(line)
94 outFile.close()
95 line = mdFile.readline()
96 if not line: break
97
98 mdFile.close()
99
100
101 def main(argv):
102 try:
103 opts, args = getopt.getopt(argv, "hm:s:", ["help", "meta-data=","split-frame", ""])
104 except getopt.GetoptError:
105 usage()
106 sys.exit(2)
107 for opt, arg in opts:
108 if opt in ("-h", "--help"):
109 usage()
110 sys.exit()
111 elif opt in ("-m", "--meta-data"):
112 mdFileName = arg
113 global _haveMDFileName
114 _haveMDFileName = 1
115 elif opt in ("-s", "--split-frame"):
116 skipFrameNumber = arg
117 global _haveSplitFrame
118 _haveSplitFrame = 1
119 if (_haveMDFileName != 1):
120 usage()
121 print "No meta-data file was specified"
122 sys.exit()
123 if (_haveSplitFrame != 1):
124 usage()
125 print "Frames to split was not specified"
126 sys.exit()
127 splitFile(mdFileName,skipFrameNumber);
128
129 if __name__ == "__main__":
130 if len(sys.argv) == 1:
131 usage()
132 sys.exit()
133 main(sys.argv[1:])
134

Properties

Name Value
svn:executable *