fasta文件中DNA to RNA
同样的名为read_1.fa 的fasta文件,里面有若干序列,如:
>@r1
TGAATGCGAACTCCGGGACGCTCAGTAATGTGACGATAGCTGAAAACTGTACGATAAACNGTACGCTGAGGGCAGAAAAAATCGTCGGGGACATTNTAAAGGCGGCGAGCGCGGCTTTTCCG
>@r2
NTTNTGATGCGGGCTTGTGGAGTTCAGCCGATCTGACTTATGTCATTACCTATGAAATGTGAGGACGCTATGCCTGTACCAAATCCTACAATGCCGGTGAAAGGTGCCGGGATCACCCTGTGGGTTTAT
>@r3
ATCGCCCGCAGACACCTTCACGCTGGACTGTTTCGGCTTTTACAGCGTCGCTTCATAATCCTTTTTCGCCGCCGCCATCAGCGTGTTGTAATCCGCCTGCAGGATTTTCCCGTCTTTCNGTGCCTTGNT
..........等等
第一种,利用replace(),dna_2_rna.py 代码如下:
1 #encoding = utf-8 2 3 """ 4 简介:fasta文件中dna to rna 5 作者:刘自军 6 date:2017年5月12日 20:59 7 """ 8 9 import sys 10 from collections import OrderedDict 11 12 args = sys.argv 13 14 tmp_dit = OrderedDict() 15 16 with open(args[1]) as f: 17 for line in f: 18 19 line = line.upper().strip('\n') 20 21 if line.startswith('>'): 22 seq_id = line 23 tmp_dit[seq_id] = '' 24 else: 25 tmp_dit[seq_id] = line.replace('T','U') 26 #replace的用法为string.replace(old,new) 27 28 for seq_id,seq in tmp_dit.items(): 29 print ('%s\n%s' %(seq_id,seq))
或者:
1 #encoding = utf-8 2 3 """ 4 简介:求fasta文件中每个序列的反向序列,利用replace的方法,不事先定义字典,代码更简洁 5 作者:刘自军 6 date:2017年5月13日17:35 7 """ 8 9 import sys 10 11 args = sys.argv 12 13 with open(args[1]) as f: 14 15 while True: 16 line_1 = f.readline().strip('\n') 17 if not line_1: 18 break 19 line_2 = f.readline().strip('\n').upper() 20 line_2 = line_2.replace('T','U') 21 22 print (line_1) 23 print (line_2)
第二种,利用re.sub(),dna_2_rna.py 代码如下:
1 #encoding = utf-8 2 3 """ 4 简介:fasta文件中dna to rna 使用sub 5 作者:刘自军 6 date:2017年5月12日 20:59 7 """ 8 9 import sys 10 import re 11 from collections import OrderedDict 12 13 args = sys.argv 14 15 tmp_dit = OrderedDict() 16 17 with open(args[1]) as f: 18 for line in f: 19 20 line = line.upper().strip('\n') 21 22 if line.startswith('>'): 23 seq_id = line 24 tmp_dit[seq_id] = '' 25 else: 26 tmp_dit[seq_id] = re.sub('T','U',line) 27 #re.sub(pattern,repl,string) 28 #即re.sub(old,new,string) 29 30 for seq_id,seq in tmp_dit.items(): 31 print ('%s\n%s' %(seq_id,seq))