所以我有一个DNA序列文件,我的目标是用字母M随机替换序列中的5个核苷酸。
即。 dna1.txt具有序列ACTGGCTACATTG。
我想让ACTGGCTACATTG看起来像ACMMGCMMCATMG或类似的东西。
我知道如何一次更换一个字母,但不是几个。
dna1 = open ("dna1.txt","r")
data1 = dna1.read()
from random import randint, choice
def Mutated_DNA(data1):
dna_list = list(data1)
mutation_site = randint(0, len(dna_list)-1)
dna_list[mutation_site] = choice(list('M'))
return ''.join(dna_list)
print (Mutated_DNA(data1))
我该怎么办?
答案 0 :(得分:1)
如果你想用新的东西替换完全 5个字符,那么我认为最简单的方法是从可能的位置进行抽样,然后改变那些。例如:
from random import sample
def mutate(s, num, target):
change_locs = set(sample(range(len(s)), num))
changed = (target if i in change_locs else c for i,c in enumerate(s))
return ''.join(changed)
e.g。
>>> mutate('ABC', 2, 'M')
'MMC'
>>> mutate('ABC', 2, 'M')
'AMM'
>>> mutate('ABC', 2, 'M')
'MMC'
>>> mutate('ABC', 2, 'M')
'MBM'
或
def mutate(s, num, target):
change_locs = sample(range(len(s)), num)
new_s = list(s)
for change_loc in change_locs:
new_s[change_loc] = target
return ''.join(new_s)
等