##################################
#                                #
# Last modified 10/15/2012       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys

def run():

    if len(sys.argv) < 4:
        print 'usage: python %s inputfilename IDfield(s) seqfield outfilename' % sys.argv[0]
        print '\tIDfields should be comma separated if there is more than one; they will be separated by :: in the final output'
        sys.exit(1)

    inputfilename = sys.argv[1]
    outputfilename = sys.argv[4]
    seqfieldID = int(sys.argv[3])
    IDFields = []
    fields = sys.argv[2].split(',')
    for ID in fields:
        IDFields.append(int(ID))

    outfile = open(outputfilename, 'w')

    listoflines = open(inputfilename)
    i=0 
    for line in listoflines:
        i+=1
        if line.startswith('#'):
            continue
        fields=line.strip().split('\t')
        try:
            sequence = fields[seqfieldID]
        except:
            print 'can not find ID', seqfieldID, 'in fields in line', i
            continue
        if len(sequence) == 0:
            continue
        seqID = '>'
        for ID in IDFields:
            seqID = seqID + fields[ID] + '::'
        outfile.write(seqID[0:-2] + '\n')
        outfile.write(sequence + '\n')
        
    outfile.close()

run()

