2017-09-22 27 views
1

使用列表理解返回DNA的互補特徵的最佳方式是什麼,而不是4個不同的if陳述?返回恭維核苷酸字符

例如:

A <-> T 「A」 返回 「T」 和 「T」 返回 「A」

G <-> C 「G」 返回 「C」 和 「C」 返回 「G」

沒有循環等。內置函數是允許的。

+1

如何另一個答案關於創建一個字典,將A映射到T等,然後在字典中查找它?這是一個更優雅的版本,如果:) – okaram

+0

@Carcigenicate重點是,我已經嘗試了4如果語句,並想知道是否有人有更好的方法來做到這一點 –

回答

4

你能有外部字典這樣

strand = 'GATTAGAC' 

comps = {'A':'T', 'C':'G', 'G':'C', 'T':'A' } 

comp_strand = [ comps[x] for x in strand ] 

如果你想在你輸入容忍未知字符,查找「defaultdict」

+1

只是一個小的語法錯誤,開頭的引號' A'缺少合成分配 – coolioasjulio

2

從這裏http://biopython.org/wiki/Seq

>>> 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()) 
相關問題