##################################
#                                #
# Last modified 12/18/2015       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
from sets import Set
import numpy

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s names.tab PANTHER_output outpurfilename' % sys.argv[0]
        sys.exit(1)

    names = sys.argv[1]
    PANTHER = sys.argv[2]
    outfilename = sys.argv[3]

    NamesDict = {}
    inputdatafile = open(names)
    for line in inputdatafile:
        if line.startswith('#'):
            continue
        fields = line.strip().split('\t')
        ID = fields[0].split('.mod')[0]
        if ID.endswith('.mag'):
            ID = ID[0:-4]
        NamesDict[ID] = fields[1]

    outfile = open(outfilename, 'w')

    inputdatafile = open(PANTHER)
    p=0
    for line in inputdatafile:
        if line.startswith('#'):
            outfile.write(line)
            continue
        fields = line.strip().split('\t')
        ID = fields[1]
        if NamesDict.has_key(ID):
            name = NamesDict[ID]
        else:
            name = ''
            p+=1
            print 'could not find ID in names', ID, p
        outline = fields[0] + '\t' + fields[1] + '\t' + name + '\t' + fields[3] + '\t' + fields[4] + '\t' + fields[5]
        outfile.write(outline + '\n')

    outfile.close()
   
run()
