##################################
#                                #
# Last modified 2018/08/14       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
import os

#         AA, CC, GG, TT : 0
#         AC, CA, GT, TG : 1
#         AG, CT, GA, TC : 2
#         AT, CG, GC, TA : 3

def run():

    if len(sys.argv) < 1:
        print 'usage: python %s input' % sys.argv[0]
        print '\tnote: the script will print to stdout by default'
        sys.exit(1)

    input = sys.argv[1]

    if input.endswith('.bz2'):
        cmd = 'bzip2 -cd ' + input
    elif input.endswith('.gz'):
        cmd = 'zcat ' + input
    else:
        cmd = 'cat ' + input
    p = os.popen(cmd, "r")
    line = 'line'
    L = 0
    while line != '':
        line = p.readline()
        if line == '':
            break
        if line.startswith('@') and L == 0:
            L = 1
            print line.strip()
            continue
        if L == 1:
            cseq = line.strip()
            seq = line[0]
            for i in range(1,len(cseq)):
                if cseq[i] == '0':
                    seq += seq[-1]
                elif cseq[i] == '1':
                    if seq[-1] == 'A':
                        seq += 'C'
                    elif seq[-1] == 'C':
                        seq += 'A'
                    elif seq[-1] == 'G':
                        seq += 'T'
                    elif seq[-1] == 'T':
                        seq += 'G'
                    else:
                        seq += 'N'
                elif cseq[i] == '2':
                    if seq[-1] == 'A':
                        seq += 'G'
                    elif seq[-1] == 'C':
                        seq += 'T'
                    elif seq[-1] == 'G':
                        seq += 'A'
                    elif seq[-1] == 'T':
                        seq += 'C'
                    else:
                        seq += 'N'
                elif cseq[i] == '3':
                    if seq[-1] == 'A':
                        seq += 'T'
                    elif seq[-1] == 'C':
                        seq += 'G'
                    elif seq[-1] == 'G':
                        seq += 'C'
                    elif seq[-1] == 'T':
                        seq += 'A'
                    else:
                        seq += 'N'
                else:
                    seq += 'N'
            print seq[1:]
            L = 2
            continue
        if L == 2:
            print '+'
            L = 3
            continue
        if L == 3:
            L = 0
            print line.strip()
            continue
        

run()

