我正在编写一个程序,它读取许多 DNA 字符(总是能被 3 整除)并检查它们是否对应于相同的氨基酸。例如 AAT 和 AAC 都对应于 N,所以我的程序应该打印“It's the same”。它做得很好,但我只是不知道如何比较 6/9/12/3 的任何倍数,看看定义是否相同。例如:
AAAAACAAG
AAAAACAAA
应该还给我因为他们都是KNK。
这是我的代码:
sequence = {}
d = 0
for line in open('codon_amino.txt'):
pattern, character = line.split()
sequence[pattern] = character
a = input('Enter original DNA: ')
b = input('Enter patient DNA: ')
for i in range(len(a)):
if sequence[a] == sequence[b]:
d = d + 0
else:
d = d + 1
if d == 0:
print('It\'s the same')
else:
print('Mutated!')
我的 codon_amino.txt 的结构如下:
AAA K
AAC N
AAG K
AAT N
ACA T
ACC T
ACG T
ACT T
我如何比较 3 种模式中的 DNA 结构?我让它适用于 3 个字母长的字符串,但它会返回一个错误。
编辑:
如果我知道如何将 a 和 b 拆分为一个以三个为间隔的列表,这可能会有所帮助:
a2 = a.split(SPLITINTOINTERVALSOFTHREE)
然后我可以轻松地使用 for 循环来遍历它们,但是我如何首先拆分它们呢?
编辑:解决方案:
sequence = {}
d = 0
for line in open('codon_amino.txt'):
pattern, character = line.split()
sequence[pattern] = character
a = input('Enter original DNA: ')
b = input('Enter patient DNA: ')
for i in range(len(a)):
if all(sequence[a[i:i+3]] == sequence[b[i:i+3]] for i in range(0, len(a), 3)):
d = d + 1
else:
d = d + 0
if d == 0:
print('The patient\'s amino acid sequence is mutated.')
else:
print('The patient\'s amino acid sequence is not mutated.')