zoukankan      html  css  js  c++  java
  • 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))

     

  • 相关阅读:
    postman使用感言
    20. 有效的括号
    13. 罗马数字转整数
    qsort / bsearch
    堆排序(heapsort)
    递归Recursion
    拓扑排序
    N/A的含义
    初级系列17.爱因斯坦的数学题问题
    初级系列16.求车速问题
  • 原文地址:https://www.cnblogs.com/nklzj/p/6850700.html
Copyright © 2011-2022 走看看