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 (17 years, 11 months ago) by chuckv
File size: 3458 byte(s)
Log Message:
Added utility to split dump file frames into md files.

File Contents

# User Rev Content
1 chuckv 3034 #!/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 *