Python中的Begginer-DNA序列列表的RNA转录本
我是Python的新手,我正在尝试获取DNA序列的RNA转录。虽然我可以对一个DNA序列这样做,但我正试图找到一种方法来对一系列DNA序列这样做。我希望你能给我一些指导Python中的Begginer-DNA序列列表的RNA转录本,python,list,Python,List,我是Python的新手,我正在尝试获取DNA序列的RNA转录。虽然我可以对一个DNA序列这样做,但我正试图找到一种方法来对一系列DNA序列这样做。我希望你能给我一些指导 # Given this DNA sequence, get the RNA sequence: dna = 'ACCTGACT' # Defining the RNA transcription formula def to_rna(dna_strand): mapping = {'G':'C', 'C':'G',
# Given this DNA sequence, get the RNA sequence:
dna = 'ACCTGACT'
# Defining the RNA transcription formula
def to_rna(dna_strand):
mapping = {'G':'C', 'C':'G', 'T':'A', 'A':'U'}
rna_strand = ''
for char in dna_strand:
rna_strand += mapping[char]
return rna_strand
输出:
RNA transcript= UGGACUGA
我一直想做的是,从DNA序列列表中获取RNA转录列表。我已经尝试过修改上面的代码,但我无法实现任何解决方案。我想知道你是否能帮我回答这个问题
投入将是:
dna1= ['ACCTGACT','AATTGTCT']
预期成果:
rna1 = ['UGGACUGA','UUAACAGA']
您可以使用:
上述内容相当于一个循环:
您可以使用:
上述内容相当于一个循环:
这是地图功能的主要示例map'接受函数f和列表l,并将f应用于l的每个元素。在你的情况下,那是
dnas = ['ACCTGACT' , 'ATTA']
mapping = {'G':'C', 'C':'G', 'T':'A', 'A':'U'}
def to_rna(dna):
return ''.join(map(lambda x: mapping[x], dna))
rnas = list(map(to_rna, dnas))
print(rnas)
这是地图功能的主要示例map'接受函数f和列表l,并将f应用于l的每个元素。在你的情况下,那是
dnas = ['ACCTGACT' , 'ATTA']
mapping = {'G':'C', 'C':'G', 'T':'A', 'A':'U'}
def to_rna(dna):
return ''.join(map(lambda x: mapping[x], dna))
rnas = list(map(to_rna, dnas))
print(rnas)
使用内置的带整数键的
translate
,这比自定义方法和其他答案快得多(40倍)
table = {71: 67, 67: 71, 84: 65, 65: 85}
dna = 'ACCTGACT'
assert dna.translate(table) == 'UGGACUGA'
e、 g.与:
$ python -m timeit "table = <table>; x = 'gctaatcg'*N" '<method>'
在最新的MacBook上使用Python 3.9.0运行上述操作:
N = 1000
TRLT_ORD 20000 loops, best of 5: 10.3 usec per loop
TRLT_STR 500 loops, best of 5: 394 usec per loop
JOIN_MAP 500 loops, best of 5: 401 usec per loop
e、 g.最快版本:
$ python -m timeit "table = {ord('g'): ord('c'), ord('c'): ord('g'), ord('t'): ord('a'), ord('a'): ord('u')}; x = 'gctaatcg'*1000" 'x.translate(table)'
注意,对于小数字来说,这并不重要
N = 1
TRLT_STR 500000 loops, best of 5: 406 nsec per loop
TRLT_ORD 500000 loops, best of 5: 641 nsec per loop
JOIN_MAP 500000 loops, best of 5: 931 nsec per loop
使用内置的带整数键的
translate
,这比自定义方法和其他答案快得多(40倍)
table = {71: 67, 67: 71, 84: 65, 65: 85}
dna = 'ACCTGACT'
assert dna.translate(table) == 'UGGACUGA'
e、 g.与:
$ python -m timeit "table = <table>; x = 'gctaatcg'*N" '<method>'
在最新的MacBook上使用Python 3.9.0运行上述操作:
N = 1000
TRLT_ORD 20000 loops, best of 5: 10.3 usec per loop
TRLT_STR 500 loops, best of 5: 394 usec per loop
JOIN_MAP 500 loops, best of 5: 401 usec per loop
e、 g.最快版本:
$ python -m timeit "table = {ord('g'): ord('c'), ord('c'): ord('g'), ord('t'): ord('a'), ord('a'): ord('u')}; x = 'gctaatcg'*1000" 'x.translate(table)'
注意,对于小数字来说,这并不重要
N = 1
TRLT_STR 500000 loops, best of 5: 406 nsec per loop
TRLT_ORD 500000 loops, best of 5: 641 nsec per loop
JOIN_MAP 500000 loops, best of 5: 931 nsec per loop
非常感谢你。这比我想象的要简单。我试图修改我的初始代码。这真的很有帮助,我感谢你的帮助!:)非常感谢你。这比我想象的要简单。我试图修改我的初始代码。这真的很有帮助,我感谢你的帮助!:)