##################################
#                                #
# Last modified 2023/09/15       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string

def run():

    if len(sys.argv) < 2:
        print 'usage: python %s inputfilename <outfile prefix>' % sys.argv[0]
        sys.exit(1)

    inputfilename = sys.argv[1]
    outputfileprefix = sys.argv[2]

    lineslist = open(inputfilename)

    sequenceDict={}
    i=0
    ID=''
    sequence=''
    for line in lineslist:
        if i % 100000 == 0:
            print i, 'lines processed'
        i+=1
        if line[0] == '>':
            if ID != '':
                sequenceDict[ID] = sequence
            ID = line.strip().split('>')[1]
            sequence=''
        else:
            sequence = sequence+line.strip()
    sequenceDict[ID] = sequence

    print 'finished inputting sequence'

    blocksize = 100
   
    for ID in sequenceDict.keys():
        outfile = open(outputfileprefix + ID + '.fa', 'w')
        print 'outputting file', ID, outfile
        sequence = sequenceDict[ID]
        outline = '>' + ID
        outfile.write(outline + '\n')
        for i in range(0,len(sequence),blocksize):
            outfile.write(sequence[i:min(i+blocksize, len(sequence))] + '\n')
        outfile.close()

run()
