2013-05-01 25 views
6

numaralı DNA kodunun kullanıcı girdisini (A,U,G,C) koduna dönüştürdüm. Bu Eşzamanlı .veve işlevselliği

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

Şimdi yapmam gereken bir sonraki şey, en iltifat iplikçik içine RNA_Code dönüştürmek olduğunu oldukça kolaydı. Bu, A ile U, U ile A, G ile C ve C ile G'yi değiştirmem gerektiği anlamına gelir, ancak hepsi aynı anda. Ben

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

dersem

hepsi o Us içine kadar içine tüm Bize dönüştürür ama ikisi gelince bütün sol ediyorum.

AUUUGCGGCAAA gibi bir şey alıp UAAACGCCGUUU ürününe dönüştürmem gerekiyor. ?

bu halletmek için nasıl bir fikir (3,3)

+0

Çeviri kullanımı: http://pymotw.com/2/string/#functions. –

cevap

10

kullanın çeviri tablosu:

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

RNA_Code.translate(RNA_compliment) 

str.translate() method yedek karakterine kod noktasıyla bir eşleme (bir numara) sürer. ord() function bize belirli bir karakter için bir kod noktası verir, haritanızı oluşturmayı kolaylaştırır.

Demo:

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

Drat, beni ona döv. (Görüyorum ki zaten linki kullandın!) – BlackVegetable

+0

@BlackVegetable: Biraz farklı bağlantı, bu Python 3, ama evet. –

+0

['str.maketrans'] hakkında bir şeyler unutma (http://docs.python.org/3/library/stdtypes.html#str.maketrans) –

5

Bir eşleme sözlüğü kullanabilirsiniz:

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

Zaten kullanmıyorsanız, ben Biopython dışarı denemenizi öneririz. Oldukça güzel bir Seq nesnesi de dahil olmak üzere biyolojik verilerle uğraşmak için her türlü işleve sahiptir. Tam olarak yapmaya çalıştığınız şeyi yapan bir reverse_complement() işlevi ve henüz düşünmemiş olabileceğiniz bir grup daha var. Şuna bak, bu gerçek bir zaman tasarrufu.

>>> 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())