##################################
#                                #
# Last modified 05/10/2013       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s fastq(,fastq2,fastq3,....,fastqN) output' % sys.argv[0]
        print '\t use - instead of an outfile name for stdout'
        sys.exit(1)

    fastqs = sys.argv[1].split(',')

    doStdOut = False
    if sys.argv[2] == '-':
        doStdOut = True

    if not doStdOut:
        outfile = open(sys.argv[2],'w')

    i=0
    pos=1
    for fastq in fastqs:
        input_stream = open(fastq)
        for line in input_stream:
            i+=1
            if i % 20000000 == 0:
                if not doStdOut:
                    print str(i/4000000) + 'M reads processed'
            if pos==1 and line.startswith('@'):
                if doStdOut:
                    print '@read' + str(i/4)
                else:
                    outfile.write('@read' + str(i/4) + '\n')
                pos=2
                continue
            if pos==1 and line[0] != '@':
                print 'fastq broken'
                sys.exit(1)
            if pos==2:
                if doStdOut:
                    print line.strip().upper()
                else:
                    outfile.write(line.strip().upper() + '\n')
                pos=3
                continue
            if pos==3:
                if doStdOut:
                    print line.strip()
                else:
                    outfile.write(line)
                pos=4
                continue
            if pos==4:
                if doStdOut:
                    print line.strip()
                else:
                    outfile.write(line)
                pos=1
                continue

    if not doStdOut:
        outfile.close()

run()

