##################################
#                                #
# Last modified 2017/07/26       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
import math
from sets import Set
import os

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s BismarckCXreportToWig_subset left right' % sys.argv[0]
        sys.exit(1)

    input = sys.argv[1]
    L = int(sys.argv[2])
    R = int(sys.argv[3])

    p=0
    i=0
    if input.endswith('.bz2'):
        cmd = 'bzip2 -cd ' + input
    elif input.endswith('.gz'):
        cmd = 'gunzip -c ' + input
    else:
        cmd = 'cat ' + input
    p1 = os.popen(cmd, "r")
    line = '.'
    currentPos = L
    while line != '':
        line = p1.readline()
        if line.startswith('#') or line.startswith('track ') or line.strip() == '':
            continue
        fields = line.strip().split('\t')
        chr = fields[0]
        left = int(fields[1])
        right = int(fields[2])
        score = float(fields[3])
        for i in range(currentPos,left):
            outline = chr + '\t' + str(i) + '\t' + str(i + 1) + '\t' + str(0) + '\t' + str(0)
            print outline
        outline = chr + '\t' + str(left) + '\t' + str(right) + '\t' + str(score) + '\t' + str(100 - score)
        print outline
        currentPos = right
    for i in range(currentPos+1,R):
        outline = chr + '\t' + str(i) + '\t' + str(i + 1) + '\t' + str(0) + '\t' + str(0)
        print outline


run()
