##################################
#                                #
# 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 gene.expr1 gene.expr2 outfileprefix' % sys.argv[0]
        sys.exit(1)
    
    genes1 = sys.argv[1]
    genes2 = sys.argv[2]
    outfilename = sys.argv[3]

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

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

    linelist = open(genes1)
    for line in linelist:
        if line.startswith('gene_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]
        FPKM_lo=fields[6]
        FPKM_hi=fields[7]
        status=fields[8]
        geneDict1[ID]=(ID,bundle,chr,left,right,FPKM,FPKM_lo,FPKM_hi,status)
        IDlist.append(ID)
   
    linelist = open(genes2)
    for line in linelist:
        if line.startswith('gene_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]
        FPKM_lo=fields[6]
        FPKM_hi=fields[7]
        status=fields[8]
        geneDict2[ID]=(ID,bundle,chr,left,right,FPKM,FPKM_lo,FPKM_hi,status)
        IDlist.append(ID)

    IDlist=list(set(IDlist))    

    IDlist.sort()

    for ID in IDlist:
        outline1=ID+'\t'+geneDict2[ID][2]+'\t'+geneDict2[ID][3]+'\t'+geneDict2[ID][4]+'\t'+geneDict1[ID][5]+'\t'+geneDict1[ID][6]+'\t'+geneDict1[ID][7]+'\t'+geneDict1[ID][8]+'\t'+geneDict2[ID][5]+'\t'+geneDict2[ID][6]+'\t'+geneDict2[ID][7]+'\t'+geneDict2[ID][8]
        outline2=geneDict1[ID][5]+'\t'+geneDict2[ID][5]
        outfile1.write(outline1+'\n')
        outfile2.write(outline2+'\n')

    outfile1.close()
    outfile2.close()   

run()