2013-05-01 13 views
6

私は既にDNAコード(A,T,G,C)のユーザー入力をRNAコード(A,U,G,C)に変換しました。これはかなり簡単でした同時に.replace機能

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

次に、私がする必要があるのは、RNA_Codeをその相補鎖に変換することです。つまり、AをU、UをA、GをC、CをGで置き換える必要がありますが、同時にすべてを置き換える必要があります。私は

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

を言えば

それは同様にすべての私達それを私たちにすべてのように変換しますが、私は両方のためのすべてのように残されています。

AUUUGCGGCAAAのようなものをとり、UAAACGCCGUUUに変換する必要があります。 ?

これを成し遂げる方法上の任意のアイデア(3.3)

+0

translate http://pymotw.com/2/string/#functionsを使用してください。 –

答えて

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

+0

@BlackVegetable:少し違うリンクですが、これはPython 3ですが、そうです。 –

+0

['str.maketrans']を忘れないでください(http://docs.python.org/3/library/stdtypes.html#str.maketrans) –

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を試してみることをお勧めします。それは非常に涼しいSeqオブジェクトを含む生物学的データを扱うためのあらゆる種類の機能を持っています。あなたがやろうとしていることを正確に行う機能、まだ考えていないかもしれないより多くの機能がある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()) 
関連する問題