comparison micropita_prepare.py @ 0:0de566f21448 draft default tip

v2
author sagun98
date Thu, 03 Jun 2021 18:13:32 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:0de566f21448
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 root_dir = os.path.dirname(os.path.realpath(__file__)) #Find the current directory where the program resides GW 20160810
92
93
94 fname = results.inputname
95 input_file = open(fname,'rU')
96 input_lines = input_file.readlines()
97 input_file.close()
98 table_lines = []
99 for x in input_lines:
100 first_column = x.split('\t')[0]
101 table_lines.append(first_column)
102
103
104
105 FileTimeStamp = strftime("%Y%m%d%H%M%S", gmtime())
106 LastMetaInt = 0
107 if results.lastmeta and not results.lastmeta == "None":
108 LastMetaInt = int(results.lastmeta) - 1
109
110 StratifyValueInt = 0
111 if results.stratify_value and not results.stratify_value == "None":
112 StratifyValueInt = int(results.stratify_value) - 2
113
114 LabelValueInt = 0
115 if results.label_value and not results.label_value == "None":
116 LabelValueInt = int(results.label_value) - 1
117
118 stratify_string = ""
119 q = '"'
120 if not results.stratify_value == '1':
121 stratify_string = " --stratify " + q + table_lines[StratifyValueInt] + q + " "
122
123 if results.MParameter == "features":
124 TBTargets = list()
125 TableTargets = results.targets.split(',')
126 for t in TableTargets:
127 tb_entry = int(t) + LastMetaInt
128 TBTargets.append(int(tb_entry))
129
130
131 OutTargetsFile = tempfile.NamedTemporaryFile('w', delete=False )
132 TempTargetsFileName = OutTargetsFile.name
133 indx = -1
134 for c in table_lines:
135 indx+=1
136 if indx in TBTargets:
137 OutputString = table_lines[indx] + "\n"
138 OutTargetsFile.write(OutputString)
139 OutTargetsFile.close()
140 os_command = "python " + \
141 root_dir + \
142 "/MicroPITA.py "+\
143 "--lastmeta " + table_lines[LastMetaInt]+ " " +\
144 "--feature_method " + results.feature_method + " " + \
145 "--target " + TempTargetsFileName + " " +\
146 "-m " + results.MParameter + " " + \
147 "-n " + results.NSamples + " " +\
148 stratify_string + " " +\
149 results.inputname + " " +\
150 results.outputname
151 #print os_command
152 os.system(os_command)
153 argsx = shlex.split(os_command) #Split the command
154 try:
155 subprocess.check_call(argsx , shell=False)
156 except:
157 print "The call to micropita failed============="
158 sys.exit(0)
159
160
161
162 if results.MParameter == "representative"\
163 or results.MParameter == "diverse"\
164 or results.MParameter == "extreme":
165 os_command = "python " + \
166 root_dir + \
167 "/MicroPITA.py "+\
168 "--lastmeta " + table_lines[LastMetaInt]+ " " +\
169 "-m " + results.MParameter + " " + \
170 "-n " + results.NSamples + " " +\
171 stratify_string + " " + \
172 results.inputname + " " +\
173 results.outputname
174 argsx = shlex.split(os_command) #Split the command
175 try:
176 ###os.system(os_command)
177 subprocess.check_call(argsx , shell=False)
178 except:
179 print "The call to micropita failed============="
180 sys.exit(0)
181
182
183
184
185 if results.MParameter == "distinct"\
186 or results.MParameter == "discriminant":
187 os_command = "python " + \
188 root_dir + \
189 "/MicroPITA.py "+\
190 "--lastmeta " + table_lines[LastMetaInt]+ " " +\
191 "--label " + table_lines[LastMetaInt]+ " " +\
192 "-m " + results.MParameter + " " + \
193 "-n " + results.NSamples + " " +\
194 stratify_string + " " + \
195 results.inputname + " " +\
196 results.outputname
197 #print os_command
198 argsx = shlex.split(os_command) #Split the command
199 try:
200 subprocess.check_call(argsx , shell=False)
201 except:
202 print "The call to micropita failed============="
203 sys.exit(0)