| 0 | 1 import sys | 
|  | 2 | 
|  | 3 compldna = {'A':'T', | 
|  | 4         'C':'G', | 
|  | 5         'G':'C', | 
|  | 6         'T':'A', | 
|  | 7         'U':'A', | 
|  | 8         'M':'K', | 
|  | 9         'K':'M', | 
|  | 10         'W':'W', | 
|  | 11         'S':'S', | 
|  | 12         'R':'Y', | 
|  | 13         'Y':'R', | 
|  | 14         'N':'N'} | 
|  | 15 complrna = {'A':'U', | 
|  | 16         'C':'G', | 
|  | 17         'G':'C', | 
|  | 18         'T':'A', | 
|  | 19         'U':'A', | 
|  | 20         'M':'K', | 
|  | 21         'K':'M', | 
|  | 22         'W':'W', | 
|  | 23         'S':'S', | 
|  | 24         'R':'Y', | 
|  | 25         'Y':'R', | 
|  | 26         'N':'N'} | 
|  | 27 def complement(seq,compl): | 
|  | 28     complseq = [compl[base] for base in seq] | 
|  | 29     return complseq | 
|  | 30 | 
|  | 31 def reverse_complement(seq,compl): | 
|  | 32     seq = list(seq) | 
|  | 33     seq.reverse() | 
|  | 34     return ''.join(complement(seq,compl)) | 
|  | 35 | 
|  | 36 def readFastaFile(infile,outfile,compl): | 
|  | 37 | 
|  | 38     fin = open(infile) | 
|  | 39     out = open(outfile,'w') | 
|  | 40 | 
|  | 41     currSeq='' | 
|  | 42     currSeqname=None | 
|  | 43     for line in fin: | 
|  | 44         if '>' in line: | 
|  | 45             if  currSeqname !=None: | 
|  | 46                 out.write(currSeqname+reverse_complement(currSeq,compl)+'\n') | 
|  | 47                 currSeqname=None | 
|  | 48                 currSeq='' | 
|  | 49             currSeqname=line | 
|  | 50         else: | 
|  | 51             currSeq=currSeq+line.strip().upper() | 
|  | 52 | 
|  | 53     if currSeqname!=None: | 
|  | 54         out.write(currSeqname+reverse_complement(currSeq,compl)+'\n') | 
|  | 55 | 
|  | 56     fin.close() | 
|  | 57     out.close() | 
|  | 58 | 
|  | 59 def readrawseq(infile,outfile,compl): | 
|  | 60     ''' | 
|  | 61     each line is a sequence | 
|  | 62     ''' | 
|  | 63     fin = open(infile) | 
|  | 64     out = open(outfile,'w') | 
|  | 65     for line in fin: | 
|  | 66         out.write(reverse_complement(line.strip().upper(),compl)+'\n') | 
|  | 67     fin.close() | 
|  | 68     out.close() | 
|  | 69 | 
|  | 70 def main(): | 
|  | 71     seqfile = sys.argv[1] | 
|  | 72     outfile = sys.argv[2] | 
|  | 73     fasta = sys.argv[3] | 
|  | 74     rna = sys.argv[4] | 
|  | 75     if rna == 'rna': | 
|  | 76         compl = complrna | 
|  | 77     else: | 
|  | 78         compl = compldna | 
|  | 79     if fasta == 'fasta': | 
|  | 80         readFastaFile(seqfile,outfile,compl) | 
|  | 81     else: | 
|  | 82         readrawseq(seqfile,outfile,compl) | 
|  | 83 | 
|  | 84 main() |