Source code for galaxy.datatypes.converters.interval_to_bed_converter

#!/usr/bin/env python
#Dan Blankenberg

import sys
from galaxy import eggs
import pkg_resources; pkg_resources.require( "bx-python" )
import bx.intervals.io

assert sys.version_info[:2] >= ( 2, 4 )

[docs]def stop_err( msg ): sys.stderr.write( msg ) sys.exit()
def __main__(): output_name = sys.argv[1] input_name = sys.argv[2] try: chromCol = int( sys.argv[3] ) - 1 except: stop_err( "'%s' is an invalid chrom column, correct the column settings before attempting to convert the data format." % str( sys.argv[3] ) ) try: startCol = int( sys.argv[4] ) - 1 except: stop_err( "'%s' is an invalid start column, correct the column settings before attempting to convert the data format." % str( sys.argv[4] ) ) try: endCol = int( sys.argv[5] ) - 1 except: stop_err( "'%s' is an invalid end column, correct the column settings before attempting to convert the data format." % str( sys.argv[5] ) ) try: strandCol = int( sys.argv[6] ) - 1 except: strandCol = -1 try: nameCol = int( sys.argv[7] ) - 1 except: nameCol = -1 skipped_lines = 0 first_skipped_line = 0 out = open( output_name,'w' ) count = 0 for count, region in enumerate( bx.intervals.io.NiceReaderWrapper( open( input_name, 'r' ), chrom_col=chromCol, start_col=startCol, end_col=endCol, strand_col=strandCol, fix_strand=True, return_header=False, return_comments=False ) ): try: if nameCol >= 0: name = region.fields[nameCol] else: raise IndexError except: name = "region_%i" % count try: out.write( "%s\t%i\t%i\t%s\t%i\t%s\n" % ( region.chrom, region.start, region.end, name, 0, region.strand ) ) except: skipped_lines += 1 if not first_skipped_line: first_skipped_line = count + 1 out.close() print "%i regions converted to BED." % ( count + 1 - skipped_lines ) if skipped_lines > 0: print "Skipped %d blank or invalid lines starting with line # %d." % ( skipped_lines, first_skipped_line ) if __name__ == "__main__": __main__()