##################################
#                                #
# Last modified 2024/04/17       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s chrom.sizes windowSize outfilename [-step bp] [-BED10]' % sys.argv[0]
        sys.exit(1)

    chromsizes = sys.argv[1]
    window = int(sys.argv[2])
    outfilename = sys.argv[3]

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

    doBED10 = False
    if '-BED10' in sys.argv:
        doBED10 = True

    outfile = open(outfilename, 'w')

    listoflines = open(chromsizes)
    chrLengthDict={}
    for line in listoflines:
        fields = line.strip().split('\t')
        chr = fields[0]
        chrsize = int(fields[1])
        i = 0
        while i <= chrsize:
            if doBED10:
                outline = chr + '\t' + str(i) + '\t' + str(min(chrsize, i + window))
                outline += '\t' + chr + ':' + str(i) + '-' + str(min(chrsize, i + window))
                outline += '\t100\t.\t100\t100\t100'
                outline += '\t' + str(int(window/2.))
            else:
                outline = chr + '\t' + str(i) + '\t' + str(min(chrsize, i + window))
            outfile.write(outline + '\n')
            i += step

    outfile.close()

run()

