【发布时间】:2023-12-23 01:27:02
【问题描述】:
我创建了一个 mutate_v1 函数,可以在 DNA 序列中生成随机突变。
def mutate_v1(sequence, mutation_rate):
dna_list = list(sequence)
for i in range(len(sequence)):
r = random.random()
if r < mutation_rate:
mutation_site = random.randint(0, len(dna_list) - 1)
dna_list[mutation_site] = random.choice(list('ATCG'))
return ''.join(dna_list)
如果我将我的函数应用于 G0 的所有元素,我会得到新一代 (G1) 突变体(突变序列列表)。
G0 = ['CTGAA', 'CTGAA', 'CTGAA', 'CTGAA', 'CTGAA']
G1 = [mutate_v1(s,0.01) for s in G0]
#G1
['CTGAA', 'CTGAA', 'CTGAA', 'CTGAA', 'CTGAA']
如何将我的功能重复到 G20(20 代)?
我可以像下面这样手动完成
G1 = [mutate_v1(s,0.01) for s in G0]
G2 = [mutate_v1(s,0.01) for s in G1]
G3 = [mutate_v1(s,0.01) for s in G2]
G4 = [mutate_v1(s,0.01) for s in G3]
G5 = [mutate_v1(s,0.01) for s in G4]
G6 = [mutate_v1(s,0.01) for s in G5]
G7 = [mutate_v1(s,0.01) for s in G6]
但我确信 for 循环会更好。 我已经测试了几个codes,但没有结果。
有人可以帮忙吗?
【问题讨论】:
-
你想存储我假设的每一代?
-
使用map()函数调用mutate_v1 n次。
-
@DaniMesejo 是的。我想从上一代(Gn)中获取新列表(Gn+1)。
标签: python for-loop nested bioinformatics dna-sequence