Mercurial > repos > bgruening > bismark
comparison bismark_wrapper.py @ 4:243e8f9fb75b draft
Uploaded
author | bgruening |
---|---|
date | Mon, 09 Feb 2015 18:24:41 -0500 |
parents | 91f07ff056ca |
children |
comparison
equal
deleted
inserted
replaced
3:91f07ff056ca | 4:243e8f9fb75b |
---|---|
15 sys.stderr.write( "%s\n" % msg ) | 15 sys.stderr.write( "%s\n" % msg ) |
16 sys.exit() | 16 sys.exit() |
17 | 17 |
18 def __main__(): | 18 def __main__(): |
19 | 19 |
20 print 'tempfile_location',tempfile.gettempdir() | |
21 #Parse Command Line | 20 #Parse Command Line |
22 parser = argparse.ArgumentParser(description='Wrapper for the bismark bisulfite mapper.') | 21 parser = argparse.ArgumentParser(description='Wrapper for the bismark bisulfite mapper.') |
23 parser.add_argument( '-p', '--num-threads', dest='num_threads', | 22 parser.add_argument( '-p', '--num-threads', dest='num_threads', |
24 type=int, default=4, help='Use this many threads to align reads. The default is 4.' ) | 23 type=int, default=4, help='Use this many threads to align reads. The default is 4.' ) |
25 | 24 |
256 | 255 |
257 arguments.update( {'args': additional_opts, 'reads': reads} ) | 256 arguments.update( {'args': additional_opts, 'reads': reads} ) |
258 | 257 |
259 # Final bismark command: | 258 # Final bismark command: |
260 cmd = cmd % arguments | 259 cmd = cmd % arguments |
261 print 'bismark_cmd:', cmd | |
262 #sys.stderr.write( cmd ) | |
263 #sys.exit(1) | |
264 # Run | 260 # Run |
265 try: | 261 try: |
266 tmp_out = tempfile.NamedTemporaryFile().name | 262 tmp_out = tempfile.NamedTemporaryFile().name |
267 tmp_stdout = open( tmp_out, 'wb' ) | 263 tmp_stdout = open( tmp_out, 'wb' ) |
268 tmp_err = tempfile.NamedTemporaryFile().name | 264 tmp_err = tempfile.NamedTemporaryFile().name |
319 """ | 315 """ |
320 merge all bam files | 316 merge all bam files |
321 """ | 317 """ |
322 #tmp_out = tempfile.NamedTemporaryFile( dir=output_dir ).name | 318 #tmp_out = tempfile.NamedTemporaryFile( dir=output_dir ).name |
323 tmp_stdout = open( tmp_out, 'wab' ) | 319 tmp_stdout = open( tmp_out, 'wab' ) |
324 tmp_err = tempfile.NamedTemporaryFile( dir=output_dir ).name | 320 #tmp_err = tempfile.NamedTemporaryFile( dir=output_dir ).name |
325 tmp_stderr = open( tmp_err, 'wb' ) | 321 tmp_stderr = open( tmp_err, 'wab' ) |
326 | 322 |
327 tmp_res = tempfile.NamedTemporaryFile( dir= output_dir).name | 323 tmp_res = tempfile.NamedTemporaryFile( dir= output_dir).name |
328 | 324 |
329 bam_files = glob( os.path.join( output_dir, '*.bam') ) | 325 bam_files = glob( os.path.join( output_dir, '*.bam') ) |
330 if len( bam_files ) > 1: | 326 if len( bam_files ) > 1: |
336 tmp_stdout.close() | 332 tmp_stdout.close() |
337 tmp_stderr.close() | 333 tmp_stderr.close() |
338 if returncode != 0: | 334 if returncode != 0: |
339 raise Exception, open( tmp_stderr.name ).read() | 335 raise Exception, open( tmp_stderr.name ).read() |
340 else: | 336 else: |
341 tmp_res = bam_files[0] | 337 tmp_res = bam_files[0] |
342 | 338 |
343 bam_path = "%s" % tmp_res | 339 bam_path = "%s" % tmp_res |
344 | 340 |
345 if os.path.exists( bam_path ): | 341 if os.path.exists( bam_path ): |
346 if args.sort_bam: | 342 if args.sort_bam: |
347 cmd = 'samtools sort -@ %s %s %s' % (args.num_threads, bam_path, args.output) | 343 cmd = 'samtools sort -@ %s %s sorted_bam' % (args.num_threads, bam_path) |
348 else: | 344 proc = subprocess.Popen( args=shlex.split( cmd ) ) |
349 shutil.copy( bam_path, args.output ) | 345 returncode = proc.wait() |
346 if returncode != 0: | |
347 raise Exception("Error during '%s'" % cmd) | |
348 shutil.move( 'sorted_bam.bam', args.output ) | |
349 else: | |
350 shutil.move( bam_path, args.output ) | |
350 else: | 351 else: |
351 stop_err( 'BAM file no found:\n' + str( bam_path ) ) | 352 stop_err( 'BAM file no found:\n' + str( bam_path ) ) |
352 | |
353 | 353 |
354 | 354 |
355 # TODO: look for errors in program output. | 355 # TODO: look for errors in program output. |
356 except Exception, e: | 356 except Exception, e: |
357 stop_err( 'Error in merging bam files:\n' + str( e ) ) | 357 stop_err( 'Error in merging bam files:\n' + str( e ) ) |