##################################
#                                #
# Last modified 5/23/2009         # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
from cistematic.core.geneinfo import geneinfoDB
from cistematic.genomes import Genome
from cistematic.core.homology import homologyDB

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s referenceGenome targetGenome outfilename' % sys.argv[0]
        sys.exit(1)
    
  
    Rgenome = sys.argv[1]
    Tgenome = sys.argv[2]
    outfilename = sys.argv[3]

    RG = Genome(Rgenome)
    TG = Genome(Tgenome)
    idb = geneinfoDB()
    RgeneinfoDict = idb.getallGeneInfo(Rgenome)
    TgeneinfoDict = idb.getallGeneInfo(Tgenome)

#    RfeatDict = RG.getallGeneFeatures()
#    TfeatDict = TG.getallGeneFeatures()

    outfile = open(outfilename, 'w')

    db=homologyDB(tGenomes=Tgenome)

    i=0
    line=Rgenome+' Genome ID\t'+Rgenome+'Reference Genome Name\t'+Tgenome+' Genome ID\t'+Tgenome+' Genome Name\n'
    outfile.write(line)
    for geneID in RgeneinfoDict.keys():
        if i % 1000==0:
            print i
        i+=1
        genetuple=(Rgenome,geneID)
        homolog=db.getHomologousGenes(genetuple)
        if len(homolog)==0:
            continue
        if homolog[0][1] not in TgeneinfoDict.keys():
            print homolog[0][1], 'not found in target genome'
            continue
        Rname=RgeneinfoDict[geneID][0][0]
        Tname=TgeneinfoDict[homolog[0][1]][0][0]
        line=geneID+'\t'+Rname+'\t'+ homolog[0][1]+'\t'+Tname+'\n'
        outfile.write(line)
    outfile.close()

run()
