##################################
#                                #
# Last modified 04/24/2014       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
import math
from sets import Set

def run():

    if len(sys.argv) < 4:
        print 'usage: python %s table seqFiedID CountsFieldID outputfileprefix [-minCounts N]' % sys.argv[0]
        sys.exit(1)
    
    input = sys.argv[1]
    seqFieldID = int(sys.argv[2])
    countsFieldID = int(sys.argv[3])
    outfile1 = open(sys.argv[4]+'.no_dups.fasta','w')
    outfile2 = open(sys.argv[4]+'.fasta','w')

    minCounts = 1
    if '-minCounts' in sys.argv:
        minCounts = int(sys.argv[sys.argv.index('-minCounts') + 1])

    lineslist = open(input)
    ReadID1=0
    ReadID2=0
    for line in lineslist:
        if line.startswith('#') or line.startswith('SEQUENCE'):
            continue
        fields=line.strip().split('\t')
        sequence=fields[seqFieldID]
        counts=int(fields[countsFieldID])
        if counts < minCounts:
            continue
        ReadID1+=1
        outfile1.write('>Sequence_'+str(ReadID1)+'\n')
        outfile1.write(sequence+'\n')
        for i in range(counts):
            ReadID2+=1
            outfile2.write('>Read_'+str(ReadID2)+'\n')
            outfile2.write(sequence+'\n')
        
    outfile1.close()
    outfile2.close()
   
run()
