##################################
#                                #
# Last modified 2018/02/04       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
import os

def run():

    if len(sys.argv) < 1:
        print 'usage: python %s wig' % sys.argv[0]
        print '\tUse - for stdin, the file will also take .gz and .bz2 files automatically'
        sys.exit(1)

    input = sys.argv[1]

    doStdIn = False
    if input != '-':
        if input.endswith('.bz2'):
            cmd = 'bzip2 -cd ' + input
        elif input.endswith('.gz'):
            cmd = 'zcat ' + input
        else:
            cmd = 'cat ' + input
        p = os.popen(cmd, "r")
    else:
        doStdIn = True
    i=0
    line = 'line'
    while line != '':
        if doStdIn:
            line = sys.stdin.readline()
        else:
            line = p.readline()
        if line == '':
            break
        if line.startswith('#'):
            continue
        i+=1
        fields = line.strip().split('\t')
        chr = fields[0]
        left = int(fields[1])
        right = int(fields[2])
        score = float(fields[3])
        if i == 1:
            currChr = chr
            currLeft = left
            currRight = right
            currScore = score
            continue
        if chr != currChr:
            outline = currChr + '\t' + str(currLeft) + '\t' + str(currRight) + '\t' + str(currScore)
            print outline
            currChr = chr
            currLeft = left
            currRight = right
            currScore = score
        elif left >= currRight:
            outline = currChr + '\t' + str(currLeft) + '\t' + str(currRight) + '\t' + str(currScore)
            print outline
            currChr = chr
            currLeft = left
            currRight = right
            currScore = score
        elif left > currLeft and left < currRight:
            outline = currChr + '\t' + str(currLeft) + '\t' + str(left) + '\t' + str(currScore)
            print outline
            currChr = chr
            currLeft = left
            currRight = right
            currScore = score
        elif left == currLeft and right < currRight:
            outline = currChr + '\t' + str(currLeft) + '\t' + str(left) + '\t' + str(currScore)
            print outline
        elif left == currLeft and right >= currRight:
            currChr = chr
            currLeft = left
            currRight = right
            currScore = score


run()

