##################################
#                                #
# Last modified 2025/08/27       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import os

def run():

    if len(sys.argv) < 7:
        print 'usage: python %s inputfilename chrFieldID leftFieldID rightFieldID chrom.sizes minDist outfilename' % sys.argv[0]
        print '\t use - for standard input'
        sys.exit(1)

    inputfilename = sys.argv[1]
    chrFieldID = int(sys.argv[2])
    leftFieldID = int(sys.argv[3])
    rightFieldID = int(sys.argv[4])
    chromSizes = sys.argv[5]
    minDist = int(sys.argv[6])
    outfilename = sys.argv[7]

    doStdInput = False
    if inputfilename == '-':
        doStdInput = True

    chromSizeDict = {}
    input_stream = open(chromSizes)
    for line in input_stream:
        fields = line.strip().split('\t')
        chr = fields[0]
        chromSizeDict[chr] = int(fields[1])

    outfile = open(outfilename,'w')

    if doStdInput:
        input_stream = sys.stdin
    else:
        input_stream = open(inputfilename)
    for line in input_stream:
        if line.startswith('#'):
#            outfile.write(line)
            continue
        fields = line.strip().split('\t')
        chr = fields[chrFieldID]
        left = int(fields[leftFieldID])
        right = int(fields[rightFieldID])
        if left < minDist:
            continue
        if right > (chromSizeDict[chr] - minDist):
            continue
        outfile.write(line)
        
    outfile.close()

run()

