因此,该程序工作得很好,但即使在合并了 abarnert 建议的最后修改之后,它仍然不能确保生成一个独特的突变。
这就是我到目前为止所得到的。肯定是不对的,但是我不完全明白python是如何执行下面abarnert写的代码的。
a = open (scgenome, 'r')
codon = [ ]
for line in a:
data=line.split("\t")
codon.append(data[12])
import random
def string_replace(s,index,char):
return s[:index] + char + s[index+1:]
for x in range(1,1000):
index = random.randrange(3)
letter_to_replace = random.choice(list({"A", "G", "T", "C"} - {codon[index]}))
mutated_codon = [string_replace(codon[x], index, letter_to_replace)]
for c in mutated_codon:
codon_lookup[c]
我也尝试在不使用范围的情况下以您的方式编写此代码,尽管我喜欢使用范围函数,以便我可以打印出 10 或 100 个密码子并手动检查输出是否正确,但随后我得到一个 Keyerror: 'r',在尝试确保每个替换都是唯一的之前,当我运行这个程序之前没有发生这种情况:
def string_replace(s,index,char):
return s[:index] + char + s[index+1:]
def mutate_codon(codon):
index = random.randrange(3)
letter_to_replace = random.choice(list({"A", "G", "T", "C"} - {codon[index]}))
return string_replace(codon, index, letter_to_replace)
for codon in codons:
codons = mutate_codon(codon)
print codons
for c in codons:
codon_lookup[c]
if codon_lookup[c] == ref_aminoacid[x]:
print codons, "\t", codon_lookup[c]
else:
print codons, "\t", codon_lookup[c]