2013-05-01 58 views
6

我已將用戶輸入的DNA代碼(A,T,G,C)轉換爲RNA代碼(A,U,G,C)。這很容易同時取代功能

RNA_Code=DNA_Code.replace('T','U') 

現在接下來我需要做的是將RNA_Code轉換成它的恭維鏈。這意味着我需要用U代替A,用A代替U,用C代替G,用G代替C,但是全部同時。

如果我說

RNA_Code.replace('A','U') 
RNA_Code.replace('U','A') 

它將所有作爲到我們,那麼所有的我們爲作爲,但我留下的所有至於兩者。

我需要它採取類似AUUUGCGGCAAA並將其轉換爲UAAACGCCGUUU。 ?

如何完成這件事的任何想法(3.3)

+0

使用翻譯http://pymotw.com/2/string/#functions。 – 2013-05-01 17:17:56

回答

10

使用轉換表:

RNA_compliment = { 
    ord('A'): 'U', ord('U'): 'A', 
    ord('G'): 'C', ord('C'): 'G'} 

RNA_Code.translate(RNA_compliment) 

str.translate() method需要從代碼點替換字符映射(數字)。 ord() function爲我們提供了給定角色的代碼點,使您可以輕鬆構建您的地圖。

演示:

>>> RNA_compliment = {ord('A'): 'U', ord('U'): 'A', ord('G'): 'C', ord('C'): 'G'} 
>>> 'AUUUGCGGCAAA'.translate(RNA_compliment) 
'UAAACGCCGUUU' 
+0

Drat,打我吧。 (我看你已經使用過鏈接了!) – BlackVegetable 2013-05-01 17:13:54

+0

@BlackVegetable:略有不同的鏈接,這是Python 3,但是。 – 2013-05-01 17:15:06

+0

不要忘記['str.maketrans'](http://docs.python.org/3/library/stdtypes.html#str.maketrans) – 2013-05-01 23:17:34

5

您可以使用映射詞典:

In [1]: dic={"A":"U","U":"A","G":"C","C":"G"} 

In [2]: strs="AUUUGCGGCAAA" 

In [3]: "".join(dic[x] for x in strs) 
Out[3]: 'UAAACGCCGUUU' 
1

如果你還沒有使用它,我建議嘗試Biopython。它具有處理生物數據的各種功能,包括一個非常酷的物體。有一個reverse_complement()函數可以完成你想要做的事情,還有一些你可能還沒有想到的事情。檢查一下,這是一個真正的節省時間。

>>> from Bio.Seq import Seq 
>>> from Bio.Alphabet import generic_dna 
>>> my_dna = Seq("AGTACACTGGT", generic_dna) 
>>> my_dna 
Seq('AGTACACTGGT', DNAAlphabet()) 
>>> my_dna.complement() 
Seq('TCATGTGACCA', DNAAlphabet()) 
>>> my_dna.reverse_complement() 
Seq('ACCAGTGTACT', DNAAlphabet())