简体   繁体   English

反向补体DNA

[英]Reverse complement DNA

I have this equation for reverse complementing DNA in python: 我有这个方程式在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"))

however the lines: 但是线条:

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

do not equal one another. 彼此不相等。 only the top line gives an answer. 只有顶线给出答案。 the bottom just prints "NONE" 底部只打印“无”

any help why this is? 任何帮助为什么这是?

You forgot the return statement in revcom . 你忘记了revcomreturn语句。 Try this: 试试这个:

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

If you don't explicitly return a value from a function in Python, then the function returns None . 如果没有从Python中的函数显式返回值,则该函数返回None

A pretty one liner to reverse complement a DNA sequence: 一个漂亮的衬垫,以逆转DNA序列的补充:

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

Python3, including whole IUPAC alphabet for nucleotides: Python3,包括核苷酸的整个IUPAC字母表:

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

In Python2: 在Python2中:

from string import maketrans

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

您需要从revcom() return结果。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM