##################################
#                                #
# Last modified 02/15/2011       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
from sets import Set

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s transcript.expr1 transcript.expr2 outfileprefix' % sys.argv[0]
        sys.exit(1)
    
    transcripts1 = sys.argv[1]
    transcripts2= sys.argv[2]
    outfilename = sys.argv[3]

    outfile2 = open(outfilename+'-scores', 'w')
    outfile1 = open(outfilename+'-data', 'w')

    geneDict1={}
    geneDict2={}
    IDlist=[]

    linelist = open(transcripts1)
    for line in linelist:
        if line.startswith('trans_id'):
            continue
        fields=line.strip().split('\t')
        ID=fields[0]
        bundle=fields[1]
        chr=fields[2]
        left=fields[3]
        right=fields[4]
        FPKM=fields[5]
        FMI=fields[6]
        frac=fields[7]
        FPKM_lo=fields[8]
        FPKM_hi=fields[9]
        coverage=fields[10]
        length=fields[11]
        effective_length=fields[12]
        status=fields[13]
        geneDict1[ID]=(ID,bundle,chr,left,right,FPKM,FMI,frac,FPKM_lo,FPKM_hi,coverage,length,effective_length,status)
        IDlist.append(ID)
   
    linelist = open(transcripts2)
    for line in linelist:
        if line.startswith('trans_id'):
            continue
        fields=line.strip().split('\t')
        ID=fields[0]
        bundle=fields[1]
        chr=fields[2]
        left=fields[3]
        right=fields[4]
        FPKM=fields[5]
        FMI=fields[6]
        frac=fields[7]
        FPKM_lo=fields[8]
        FPKM_hi=fields[9]
        coverage=fields[10]
        length=fields[11]
        effective_length=fields[12]
        status=fields[13]
        geneDict2[ID]=(ID,bundle,chr,left,right,FPKM,FMI,frac,FPKM_lo,FPKM_hi,coverage,length,effective_length,status)
        IDlist.append(ID)

    IDlist=list(set(IDlist))    

    IDlist.sort()

    for ID in IDlist:
        (ID1,bundle1,chr1,left1,right1,FPKM1,FMI1,frac1,FPKM_lo1,FPKM_hi1,coverage1,length1,effective_length1,status1)=geneDict1[ID]
        (ID2,bundle2,chr2,left2,right2,FPKM2,FMI2,frac2,FPKM_lo2,FPKM_hi2,coverage2,length2,effective_length2,status2)=geneDict2[ID]
        outline1=ID+'\t'+chr1+'\t'+left1+'\t'+right1+'\t'+FPKM1+'\t'+FMI1+'\t'+frac1+'\t'+FPKM_lo1+'\t'+FPKM_hi1+'\t'+coverage1+'\t'+length1+'\t'+effective_length1+'\t'+status1
        outline1=outline1+'\t'+FPKM2+'\t'+FMI2+'\t'+frac2+'\t'+FPKM_lo2+'\t'+FPKM_hi2+'\t'+coverage2+'\t'+length2+'\t'+effective_length2+'\t'+status2
        outline2=geneDict1[ID][5]+'\t'+geneDict2[ID][5]
        outfile1.write(outline1+'\n')
        outfile2.write(outline2+'\n')

    outfile1.close()
    outfile2.close()   

run()