反向补体DNA

时间:2013-10-24 15:55:32

标签: python bioinformatics dna-sequence

我有这个方程式用于在python中反向补充DNA:

def complement(s): 
    basecomplement = {'A': 'T', 'C': 'G', 'G': 'C', 'T': 'A'} 
    letters = list(s) 
    letters = [basecomplement[base] for base in letters] 
    return ''.join(letters)
def revcom(s):
    complement(s[::-1])
print("ACGTAAA")
print(complement("ACGTAAA"[::-1]))
print(revcom("ACGTAAA"))

但行:

print(complement("ACGTAAA"[::-1]))
print(revcom("ACGTAAA"))

彼此不相等。只有顶线给出答案。底部只打印“无”

任何帮助为什么会这样?

5 个答案:

答案 0 :(得分:7)

您忘记了return中的revcom声明。试试这个:

def revcom(s):
    return complement(s[::-1])

如果没有从Python中的函数显式返回值,则函数返回None

答案 1 :(得分:4)

用于反转DNA序列互补的漂亮衬里:

revcompl = lambda x: ''.join([{'A':'T','C':'G','G':'C','T':'A'}[B] for B in x][::-1])
print revcompl("AGTCAGCAT")

答案 2 :(得分:3)

Python3,包括核苷酸的整个IUPAC字母表:

def revcomp(seq):
    return seq.translate(str.maketrans('ACGTacgtRYMKrymkVBHDvbhd', 'TGCAtgcaYRKMyrkmBVDHbvdh'))[::-1]

在Python2中:

from string import maketrans

def revcomp(seq):
    return seq.translate(maketrans('ACGTacgtRYMKrymkVBHDvbhd', 'TGCAtgcaYRKMyrkmBVDHbvdh'))[::-1]

答案 3 :(得分:1)

您需要return来自revcom()的结果。

答案 4 :(得分:0)

`a = "AAAACCCGGT"
a= a[::-1]
print("reverse: "+a)
a = a.replace('A','a')
a = a.replace('T','A')
a = a.replace('a','T')
a = a.replace('C','c')
a = a.replace('G','C')
a = a.replace('c','G')
print("complement : "+a)`