ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/applications/utilities/mdSplit
Revision: 1442
Committed: Mon May 10 17:28:26 2010 UTC (14 years, 11 months ago) by gezelter
Original Path: trunk/src/applications/utilities/mdSplit
File size: 3599 byte(s)
Log Message:
Adding property set to svn entries

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 gezelter 1442 __version__ = "$Revision$"
21     __date__ = "$Date$"
22 chuckv 1060 __copyright__ = "Copyright (c) 2006 by the University of Notre Dame"
23 gezelter 1390 __license__ = "OpenMD"
24 chuckv 1060
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 chuckv 1107
42     (filepath, filename) = os.path.split(mdFileName)
43 chuckv 1060
44 chuckv 1107 (outfilePrefix,ext) = os.path.splitext(filename)
45 chuckv 1060
46    
47    
48     metaDataFrame = []
49     haveMetaData = 0
50     haveMetaDataEnd = 0
51 gezelter 1390 # Find OpenMD version info first
52 chuckv 1060 line = mdFile.readline()
53     while 1:
54 gezelter 1390 if '<OOPSE version=' in line or '<OpenMD version=' in line:
55     OpenMDversion = line
56 chuckv 1060 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 chuckv 1109 outfilename = outfilePrefix + "_" + "%04d" % foundFrames + ext
89 chuckv 1060 outFile = open(outfilename,'w')
90 gezelter 1390 outFile.write(OpenMDversion)
91 chuckv 1060 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 gezelter 1390 outFile.write("</OpenMD>")
98 chuckv 1060 outFile.close()
99     line = mdFile.readline()
100     if not line: break
101 chuckv 1071
102 chuckv 1060 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 *
svn:keywords Author Id Revision Date