Mercurial > repos > galaxyp > msconvert
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__() |