【发布时间】:2019-09-15 02:46:59
【问题描述】:
我有这个函数来模拟 DNA 序列上的突变(例如字母序列 -> 'ACGTGCTTAGG')。
第一个只是改变输入序列的随机位置
def mutate(sequence):
seq_lst = list(sequence)
i = random.randint(0, len(seq_lst) - 1)
seq_lst[i] = random.choice(list('ATCG'))
return ''.join(seq_lst)
第二个是模拟在序列中随机位置插入碱基。
def insertion(sequence):
seq_lst = list(sequence)
i = random.randint(0, len(seq_lst) - 1)
mutate = seq_lst[:i] + [random.choice(list('ATCG'))] + seq_lst[i:]
return ''.join(mutate)]
最后一个是选择序列中可能发生的各种可能的随机突变。
def mutations(sequence):
i = random.randint(0, 3)
print(i)
if i == 0:
print('SNV')
return mutate(sequence)
elif i == 1:
print('Del')
return sequence.replace(random.choice('ATCG'), '-')
elif i == 2:
print('Ins')
return insertion(sequence)
elif i == 3:
print('No mut')
return sequence
打印语句只是为了检查代码是否正常工作。
有什么改进的建议吗?如果可能的话,建议如何在代码中插入突变概率来模拟更真实的情况。
我在10000随机过程的回归中看到的是,序列积累了很多缺失,一旦单点突变比较频繁,其次是插入和缺失频率较低的插入和缺失。
谢谢
【问题讨论】:
-
你传递给每个函数的参数
sequence是什么类型的? -
我编辑了这篇文章。感谢您的提问。
标签: python bioinformatics