ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/applications/utilities/mdSplit
Revision: 3105
Committed: Tue Jan 2 20:12:34 2007 UTC (17 years, 6 months ago) by chuckv
File size: 3602 byte(s)
Log Message:
Changed how mdsplit gets file names. Full path is now removed from name.

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.5 $"
21 __date__ = "$Date: 2007-01-02 20:12:34 $"
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 (filepath, filename) = os.path.split(mdFileName)
43
44 (outfilePrefix,ext) = os.path.splitext(filename)
45
46
47
48 metaDataFrame = []
49 haveMetaData = 0
50 haveMetaDataEnd = 0
51 # Find OOPSE version info first
52 line = mdFile.readline()
53 while 1:
54 if '<OOPSE version=' in line:
55 OOPSEversion = line
56 break
57 line = mdFile.readline()
58
59 # Rewind file and find start of MetaData block
60
61 mdFile.seek(0)
62 breakLoop = False
63 line = mdFile.readline()
64
65 while 1:
66 if '<MetaData>' in line:
67 while 2:
68 metaDataFrame.append(line)
69 line = mdFile.readline()
70 if '</MetaData>' in line:
71 metaDataFrame.append(line)
72 breakLoop = True
73 break
74 if breakLoop:
75 break
76 line = mdFile.readline()
77
78
79 mdFile.seek(0)
80 framePos = 0
81 foundFrames = 0;
82 line = mdFile.readline()
83 while 1:
84 if '<Snapshot>' in line:
85 foundFrames += 1
86 division,remainder=divmod(foundFrames,int(skipFrameNumber))
87 if (remainder == 0):
88 outfilename = outfilePrefix + "_" +repr(foundFrames) + ext
89 outFile = open(outfilename,'w')
90 outFile.write(OOPSEversion)
91 for metaline in metaDataFrame:
92 outFile.write(metaline)
93 while not '</Snapshot>' in line:
94 outFile.write(line)
95 line = mdFile.readline()
96 outFile.write(line)
97 outFile.write("</OOPSE>")
98 outFile.close()
99 line = mdFile.readline()
100 if not line: break
101
102 mdFile.close()
103
104
105 def main(argv):
106 try:
107 opts, args = getopt.getopt(argv, "hm:s:", ["help", "meta-data=","split-frame", ""])
108 except getopt.GetoptError:
109 usage()
110 sys.exit(2)
111 for opt, arg in opts:
112 if opt in ("-h", "--help"):
113 usage()
114 sys.exit()
115 elif opt in ("-m", "--meta-data"):
116 mdFileName = arg
117 global _haveMDFileName
118 _haveMDFileName = 1
119 elif opt in ("-s", "--split-frame"):
120 skipFrameNumber = arg
121 global _haveSplitFrame
122 _haveSplitFrame = 1
123 if (_haveMDFileName != 1):
124 usage()
125 print "No meta-data file was specified"
126 sys.exit()
127 if (_haveSplitFrame != 1):
128 usage()
129 print "Frames to split was not specified"
130 sys.exit()
131 splitFile(mdFileName,skipFrameNumber);
132
133 if __name__ == "__main__":
134 if len(sys.argv) == 1:
135 usage()
136 sys.exit()
137 main(sys.argv[1:])
138

Properties

Name Value
svn:executable *