##################################
#                                #
# Last modified 09/04/2011       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
import math
from sets import Set

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s TSS-table TSS-bed outfilename' % sys.argv[0]
        sys.exit(1)

    table = sys.argv[1]
    bed = sys.argv[2]
    outfilename = sys.argv[3]

    FPKMDict={}

    outfile = open(outfilename, 'w')

    lineslist  = open(table)
    for line in lineslist:
        if line[0]=='#':
            header=line
            continue
        fields = line.strip().split('\t')
        chr = fields[0]
        TSS = int(fields[1])
        strand = fields[2]
        FPKMDict[(chr,TSS,strand)] = line

    outline='#\t\t\t\t\t\t' + header
    outfile.write(outline)

    f=0

    lineslist  = open(bed)
    for line in lineslist:
        if line[0]=='#':
            continue
        fields=line.strip().split('\t')
        chr = fields[0]
        left = int(fields[1])
        right = int(fields[2])
        strand = fields[3]
        TSS = (right + left) / 2
        if FPKMDict.has_key((chr,TSS,strand)):
            outline = line.strip() + '\t' + FPKMDict[(chr,TSS,strand)]
            outfile.write(outline)
        else:
            f+=1
            print f, line.strip()

    outfile.close()
        
run()

