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('
')
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
%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('
')
17         if not line_1:
18             break
19         line_2 = f.readline().strip('
').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('
')
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
%s' %(seq_id,seq))

 

原文地址:https://www.cnblogs.com/nklzj/p/6850700.html