comparison msconvert_wrapper.py @ 9:dd4ba10d0c45 draft

planemo upload commit b4871f9659a924a68430aed3a93f4f9bad733fd6
author galaxyp
date Wed, 07 Dec 2016 16:43:07 -0500
parents d2c61663e33c
children
comparison
equal deleted inserted replaced
8:d2c61663e33c 9:dd4ba10d0c45
86 def __main__(): 86 def __main__():
87 run_script() 87 run_script()
88 88
89 #ENDTEMPLATE 89 #ENDTEMPLATE
90 90
91 to_extensions = ['mzML', 'mzXML', 'unindexed_mzML', 'unindexed_mzXML', 'mgf', 'txt', 'ms2', 'cms2'] 91 to_extensions = ['mzML', 'mzXML', 'unindexed_mzML', 'unindexed_mzXML', 'mgf', 'mz5', 'txt', 'ms2', 'cms2']
92 92
93 93
94 def str_to_bool(v): 94 def str_to_bool(v):
95 """ From http://stackoverflow.com/questions/715417/converting-from-a-string-to-boolean-in-python """ 95 """ From http://stackoverflow.com/questions/715417/converting-from-a-string-to-boolean-in-python """
96 return v.lower() in ["yes", "true", "t", "1"] 96 return v.lower() in ["yes", "true", "t", "1"]
169 if debug: 169 if debug:
170 print(( open(filters_file_path, "r").read() )) 170 print(( open(filters_file_path, "r").read() ))
171 return filters_file_path 171 return filters_file_path
172 172
173 173
174 def _build_base_cmd(options): 174 def _build_base_cmd(options,args=None):
175 to_extension = options.toextension 175 to_extension = options.toextension
176 if to_extension.startswith("unindexed_"): 176 if to_extension.startswith("unindexed_"):
177 to_extension = to_extension[len("unindexed_"):] 177 to_extension = to_extension[len("unindexed_"):]
178 to_params = "--noindex" 178 to_params = "--noindex"
179 else: 179 else:
180 to_params = "" 180 to_params = ""
181 cmd = "msconvert --%s %s" % (to_extension, to_params) 181 cmd = "msconvert --%s %s" % (to_extension, to_params)
182 if args:
183 cmd = "%s %s" % (cmd, ' '.join(args))
182 if str_to_bool(options.zlib): 184 if str_to_bool(options.zlib):
183 cmd = "%s %s" % (cmd, "--zlib") 185 cmd = "%s %s" % (cmd, "--zlib")
184 if options.binaryencoding: 186 if options.binaryencoding:
185 cmd = "%s --%s" % (cmd, options.binaryencoding) 187 cmd = "%s --%s" % (cmd, options.binaryencoding)
186 if options.mzencoding: 188 if options.mzencoding:
205 207
206 def run_script(): 208 def run_script():
207 parser = optparse.OptionParser() 209 parser = optparse.OptionParser()
208 parser.add_option('--input', dest='inputs', action='append', default=[]) 210 parser.add_option('--input', dest='inputs', action='append', default=[])
209 parser.add_option('--input_name', dest='input_names', action='append', default=[]) 211 parser.add_option('--input_name', dest='input_names', action='append', default=[])
212 parser.add_option('--implicit', dest='implicits', action='append', default=[], help='input files that should NOT be on the msconvert command line.')
213 parser.add_option('--ident', dest='idents', action='append', default=[])
214 parser.add_option('--ident_name', dest='ident_names', action='append', default=[])
210 parser.add_option('--output', dest='output') 215 parser.add_option('--output', dest='output')
216 parser.add_option('--refinement', dest='refinement')
211 parser.add_option('--fromextension', dest='fromextension') 217 parser.add_option('--fromextension', dest='fromextension')
212 parser.add_option('--toextension', dest='toextension', default='mzML', choices=to_extensions) 218 parser.add_option('--toextension', dest='toextension', default='mzML', choices=to_extensions)
213 parser.add_option('--binaryencoding', dest='binaryencoding', choices=['32', '64']) 219 parser.add_option('--binaryencoding', dest='binaryencoding', choices=['32', '64'])
214 parser.add_option('--mzencoding', dest='mzencoding', choices=['32', '64']) 220 parser.add_option('--mzencoding', dest='mzencoding', choices=['32', '64'])
215 parser.add_option('--intensityencoding', dest='intensityencoding', choices=['32', '64']) 221 parser.add_option('--intensityencoding', dest='intensityencoding', choices=['32', '64'])
237 input_base = input_base.replace("'", "").replace("\"", "") 243 input_base = input_base.replace("'", "").replace("\"", "")
238 print("1- input_base: %s" % input_base) 244 print("1- input_base: %s" % input_base)
239 if not input_base: 245 if not input_base:
240 input_base = 'input%s' % i 246 input_base = 'input%s' % i
241 print("2- input_base: %s" % input_base) 247 print("2- input_base: %s" % input_base)
242 if not input_base.lower().endswith(options.fromextension.lower()): 248 if not input_base.lower().endswith('.%s' % options.fromextension.lower()) and input not in options.implicits:
243 input_file = '%s.%s' % (input_base, options.fromextension) 249 input_file = '%s.%s' % (input_base, options.fromextension)
244 print("3- input_base: %s" % input_base) 250 print("3- input_base: %s" % input_base)
245 print("3- input_file: %s" % input_file) 251 print("3- input_file: %s" % input_file)
246 else: 252 else:
247 input_file = input_base 253 input_file = input_base
248 print("4- input_base: %s" % input_base) 254 print("4- input_base: %s" % input_base)
249 print("4- input_file: %s" % input_file) 255 print("4- input_file: %s" % input_file)
250 input_file = input_file 256 input_file = input_file
251 copy_to_working_directory(input, input_file) 257 copy_to_working_directory(input, input_file)
258 if input in options.implicits:
259 continue
252 input_files.append(input_file) 260 input_files.append(input_file)
253 261 for i, ident in enumerate(options.idents):
254 cmd = _build_base_cmd(options) 262 ident_file = options.ident_names[i]
263 copy_to_working_directory(ident, ident_file)
264
265 cmd = _build_base_cmd(options,args=args)
255 file_column = options.filter_table_file_column 266 file_column = options.filter_table_file_column
256 if not file_column: 267 if not file_column:
257 # Apply same filters to all files, just create a unviersal filter files 268 # Apply same filters to all files, just create a unviersal filter files
258 # and run msconvert once. 269 # and run msconvert once.
259 filters_file_path = _create_filters_file(options, debug=options.debug) 270 filters_file_path = _create_filters_file(options, debug=options.debug)
270 input_files = filtered_files 281 input_files = filtered_files
271 if len(input_files) > 1: 282 if len(input_files) > 1:
272 cmd = "%s --merge" % cmd 283 cmd = "%s --merge" % cmd
273 output_file = _run(cmd, output_dir='output', inputs=input_files, debug=options.debug) 284 output_file = _run(cmd, output_dir='output', inputs=input_files, debug=options.debug)
274 shutil.copy(output_file, options.output) 285 shutil.copy(output_file, options.output)
275 286 if options.refinement:
287 # .mzRefinement.tsv
288 files = os.listdir(os.getcwd())
289 for fname in files:
290 if fname.endswith('.mzRefinement.tsv'):
291 shutil.copy(fname, options.refinement)
292 break
293
294 def __main__():
295 run_script()
276 296
277 if __name__ == '__main__': 297 if __name__ == '__main__':
278 __main__() 298 __main__()