##################################
#                                #
# Last modified 2020/09/14       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
import math
from sets import Set

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s chromSizes chunkSize outfilename [-step bp] [-slamdunk]' % sys.argv[0]
        sys.exit(1)

    inputfilename = sys.argv[1]
    chunk = int(sys.argv[2])
    outfilename = sys.argv[3]

    step = chunk

    if '-step' in sys.argv:
        step = int(sys.argv[sys.argv.index('-step') + 1])

    doSD = False
    if '-slamdunk' in sys.argv:
        doSD = True

    outfile = open(outfilename,'w')

    input_stream = open(inputfilename)
    for line in input_stream:
        if line.startswith('#'):
            continue
        fields = line.strip().split('\t')
        chr = fields[0]
        length = int(fields[1])
        pos = 0
        for j in range(0,length-chunk,step):
            if doSD:
                outline = chr + '\t' + str(pos) + '\t' + str(pos + chunk) + '\t' + chr + ':' + str(pos) + '-' + str(pos + chunk) + '\t0\t+' 
            else:
                outline = chr + '\t' + str(pos) + '\t' + str(pos + chunk)
            pos += step
            outfile.write(outline+'\n')
        if doSD:
            outline = chr + '\t' + str(pos) + '\t' + str(length) + '\t' + chr + ':' + str(pos) + '-' + str(length) + '\t0\t+' 
        else:
            outline = chr + '\t' + str(pos) + '\t' + str(length)
        outfile.write(outline+'\n')
    outfile.close()
        
run()
