ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/applications/utilities/mdSplit
Revision: 1073
Committed: Sun Oct 15 18:02:29 2006 UTC (18 years, 6 months ago) by chuckv
Original Path: trunk/src/applications/utilities/mdSplit
File size: 3547 byte(s)
Log Message:
More typos...

File Contents

# User Rev Content
1 chuckv 1060 #!/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 chuckv 1073 __version__ = "$Revision: 1.4 $"
21     __date__ = "$Date: 2006-10-15 18:02:29 $"
22 chuckv 1060 __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 chuckv 1073 outFile.write(OOPSEversion)
89 chuckv 1060 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 chuckv 1072 outFile.write("</OOPSE>")
96 chuckv 1060 outFile.close()
97     line = mdFile.readline()
98     if not line: break
99 chuckv 1071
100 chuckv 1060 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 *