##################################
#                                #
# Last modified 10/10/2012       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
from sets import Set

try:
	import psyco
	psyco.full()
except:
	pass

def run():

    if len(sys.argv) < 5:
        print 'usage: python %s input.juncs block_size name label output.bed' % sys.argv[0]
        sys.exit(1)

    inputfilename = sys.argv[1]
    blocksize = int(sys.argv[2])
    name = sys.argv[3]
    label = sys.argv[4]
    outputfilename = sys.argv[5]

    outfile=open(outputfilename, 'w')
    outline = 'track name=' + label + ' description="' + label + '"'
    outfile.write(outline + '\n')

    lineslist = open(inputfilename)
    i=0
    for line in lineslist:
        if line.startswith('#'):
            continue
        i+=1
        fields = line.strip().split('\t')
        chr=fields[0]
        left=int(fields[1])
        right=int(fields[2])
        strand=fields[3]
        outline = chr + '\t' + str(left - blocksize) + '\t' + str(right + blocksize)
        outline = outline + '\t' + name + str(i) + '\t' + str(blocksize) + '\t' + strand + '\t' + str(left - blocksize) + '\t' + str(right + blocksize)
        outline = outline + '\t255,0,0\t2\t' + str(blocksize) + ',' + str(blocksize)
        outline = outline + '\t0,' + str(right + blocksize - left)
        outfile.write(outline+'\n')
             
    outfile.close()

run()

