ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/applications/utilities/mdSplit
Revision: 3048
Committed: Sun Oct 15 17:59:37 2006 UTC (17 years, 9 months ago) by chuckv
File size: 3547 byte(s)
Log Message:
Typo in mdSplit.

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.3 $"
21 __date__ = "$Date: 2006-10-15 17:59:37 $"
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 outFile.write(oopseVersion)
89 for metaline in metaDataFrame:
90 outFile.write(metaline)
91 while not '</Snapshot>' in line:
92 outFile.write(line)
93 line = mdFile.readline()
94 outFile.write(line)
95 outFile.write("</OOPSE>")
96 outFile.close()
97 line = mdFile.readline()
98 if not line: break
99
100 mdFile.close()
101
102
103 def main(argv):
104 try:
105 opts, args = getopt.getopt(argv, "hm:s:", ["help", "meta-data=","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 ("-s", "--split-frame"):
118 skipFrameNumber = arg
119 global _haveSplitFrame
120 _haveSplitFrame = 1
121 if (_haveMDFileName != 1):
122 usage()
123 print "No meta-data file was specified"
124 sys.exit()
125 if (_haveSplitFrame != 1):
126 usage()
127 print "Frames to split was not specified"
128 sys.exit()
129 splitFile(mdFileName,skipFrameNumber);
130
131 if __name__ == "__main__":
132 if len(sys.argv) == 1:
133 usage()
134 sys.exit()
135 main(sys.argv[1:])
136

Properties

Name Value
svn:executable *