返回一个赞美的核苷酸字符

时间:2017-09-22 02:23:19

标签: python

在没有4个不同if陈述的情况下,使用列表理解返回DNA互补字符的最佳方法是什么?

例如:

A <-> T “A”返回“T”,“T”返回“A”

G <-> C “G”返回“C”,“C”返回“G”

没有循环等。允许内置功能。<​​/ p>

2 个答案:

答案 0 :(得分:4)

你能拥有这样的外部词典吗?

strand =  'GATTAGAC'

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

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

如果您想在输入中容忍未知字符,请查找“defaultdict”

答案 1 :(得分: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())