##################################
#                                #
# Last modified 2021/06/14       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string

def run():

    if len(sys.argv) < 4:
        print 'usage: python %s bed chrFieldID new_region_size outfilename [-step bp]' % sys.argv[0]
        sys.exit(1)

    bed = sys.argv[1]
    chrFieldID = int(sys.argv[2])
    window = int(sys.argv[3])
    outfilename = sys.argv[4]

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

    outfile = open(outfilename, 'w')

    listoflines = open(bed)
    for line in listoflines:
        fields = line.strip().split('\t')
        chr = fields[chrFieldID]
        left = int(fields[chrFieldID + 1])
        right = int(fields[chrFieldID + 2])
        i = left
        while i + window <= right:
            outline = ''
            for j in range(chrFieldID):
                outline = outline + fields[j] + '\t'
            outline = outline + chr + '\t' + str(i) + '\t' + str(i + window) + '\t'
            for j in range(chrFieldID + 3, len(fields)):
                outline = outline + fields[j] + '\t'
            outfile.write(outline.strip() + '\n')
            i += step

    outfile.close()

run()

