comparison micropita_prepare.py @ 0:2f4f6f08c8c4 draft

Uploaded
author george-weingart
date Tue, 13 May 2014 21:58:57 -0400
parents
children b4cf8c75305b
comparison
equal deleted inserted replaced
-1:000000000000 0:2f4f6f08c8c4
1 #!/usr/bin/env python
2
3 """
4 Author: George Weingart
5 Description: Prepare parameters to call micropita
6 """
7
8 #####################################################################################
9 #Copyright (C) <2012>
10 #
11 #Permission is hereby granted, free of charge, to any person obtaining a copy of
12 #this software and associated documentation files (the "Software"), to deal in the
13 #Software without restriction, including without limitation the rights to use, copy,
14 #modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
15 #and to permit persons to whom the Software is furnished to do so, subject to
16 #the following conditions:
17 #
18 #The above copyright notice and this permission notice shall be included in all copies
19 #or substantial portions of the Software.
20 #
21 #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
22 #INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
23 #PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 #HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 #OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 #SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 #####################################################################################
28
29 __author__ = "George Weingart"
30 __copyright__ = "Copyright 2012"
31 __credits__ = ["George Weingart"]
32 __license__ = "MIT"
33 __maintainer__ = "George Weingart"
34 __email__ = "george.weingart@gmail.com"
35 __status__ = "Development"
36
37 import argparse
38 from cStringIO import StringIO
39 import sys,string,time
40 import os
41 from time import gmtime, strftime
42 from pprint import pprint
43 import subprocess
44 import blist
45 import shlex
46 import tempfile
47
48 ##################################################################################
49 # Modification by George Weingart 5/6/2014 #
50 # Using subprocess to invoke the calls to Micropita #
51 # and allocating the temporary file using trmpfile #
52 ##################################################################################
53
54
55
56
57 ##################################################################################
58 # Decode Parms #
59 ##################################################################################
60 def read_params(x):
61 parser = argparse.ArgumentParser(description='Micropita Annotate Argparser')
62 parser.add_argument('--input', action="store",dest='inputname')
63 parser.add_argument('--output', action="store",dest='outputname')
64 parser.add_argument('-m', action="store",dest='MParameter')
65 parser.add_argument('-n', action="store",dest='NSamples')
66 parser.add_argument('--lastmeta', action="store",dest='lastmeta')
67 parser.add_argument('--stratify_value', action="store",dest='stratify_value')
68
69
70 try:
71 parser.add_argument('--feature_method', action="store",dest='feature_method')
72 except:
73 pass
74 try:
75 parser.add_argument('--targets', action="store",dest='targets')
76 except:
77 pass
78 try:
79 parser.add_argument('--label_value', action="store",dest='label_value')
80 except:
81 pass
82 return parser
83
84
85 ##################################################################################
86 # Main Program #
87 ##################################################################################
88 parser = read_params( sys.argv )
89 results = parser.parse_args()
90 root_dir = os.environ.get('micropita_SCRIPT_PATH')
91
92
93 fname = results.inputname
94 input_file = open(fname,'rU')
95 input_lines = input_file.readlines()
96 input_file.close()
97 table_lines = []
98 for x in input_lines:
99 first_column = x.split('\t')[0]
100 table_lines.append(first_column)
101
102
103
104 FileTimeStamp = strftime("%Y%m%d%H%M%S", gmtime())
105 LastMetaInt = 0
106 if results.lastmeta and not results.lastmeta == "None":
107 LastMetaInt = int(results.lastmeta) - 1
108
109 StratifyValueInt = 0
110 if results.stratify_value and not results.stratify_value == "None":
111 StratifyValueInt = int(results.stratify_value) - 2
112
113 LabelValueInt = 0
114 if results.label_value and not results.label_value == "None":
115 LabelValueInt = int(results.label_value) - 1
116
117 stratify_string = ""
118 q = '"'
119 if not results.stratify_value == '1':
120 stratify_string = " --stratify " + q + table_lines[StratifyValueInt] + q + " "
121
122 if results.MParameter == "features":
123 TBTargets = list()
124 TableTargets = results.targets.split(',')
125 for t in TableTargets:
126 tb_entry = int(t) + LastMetaInt
127 TBTargets.append(int(tb_entry))
128
129
130 OutTargetsFile = tempfile.NamedTemporaryFile('w', delete=False )
131 TempTargetsFileName = OutTargetsFile.name
132 indx = -1
133 for c in table_lines:
134 indx+=1
135 if indx in TBTargets:
136 OutputString = table_lines[indx] + "\n"
137 OutTargetsFile.write(OutputString)
138 OutTargetsFile.close()
139 os_command = "python " + \
140 root_dir + \
141 "/MicroPITA.py "+\
142 "--lastmeta " + table_lines[LastMetaInt]+ " " +\
143 "--feature_method " + results.feature_method + " " + \
144 "--target " + TempTargetsFileName + " " +\
145 "-m " + results.MParameter + " " + \
146 "-n " + results.NSamples + " " +\
147 stratify_string + " " +\
148 results.inputname + " " +\
149 results.outputname
150 #print os_command
151 os.system(os_command)
152 argsx = shlex.split(os_command) #Split the command
153 try:
154 subprocess.check_call(argsx , shell=False)
155 except:
156 print "The call to micropita failed============="
157 sys.exit(0)
158
159
160
161 if results.MParameter == "representative"\
162 or results.MParameter == "diverse"\
163 or results.MParameter == "extreme":
164 os_command = "python " + \
165 root_dir + \
166 "/MicroPITA.py "+\
167 "--lastmeta " + table_lines[LastMetaInt]+ " " +\
168 "-m " + results.MParameter + " " + \
169 "-n " + results.NSamples + " " +\
170 stratify_string + " " + \
171 results.inputname + " " +\
172 results.outputname
173 argsx = shlex.split(os_command) #Split the command
174 try:
175 ###os.system(os_command)
176 subprocess.check_call(argsx , shell=False)
177 except:
178 print "The call to micropita failed============="
179 sys.exit(0)
180
181
182
183
184 if results.MParameter == "distinct"\
185 or results.MParameter == "discriminant":
186 os_command = "python " + \
187 root_dir + \
188 "/MicroPITA.py "+\
189 "--lastmeta " + table_lines[LastMetaInt]+ " " +\
190 "--label " + table_lines[LastMetaInt]+ " " +\
191 "-m " + results.MParameter + " " + \
192 "-n " + results.NSamples + " " +\
193 stratify_string + " " + \
194 results.inputname + " " +\
195 results.outputname
196 #print os_command
197 argsx = shlex.split(os_command) #Split the command
198 try:
199 subprocess.check_call(argsx , shell=False)
200 except:
201 print "The call to micropita failed============="
202 sys.exit(0)