多数の DNA 文字 (常に 3 で割り切れる) を読み取り、それらが同じアミノ酸に対応するかどうかをチェックするプログラムを作成しています。たとえば、AAT と AAC は両方とも N に対応するため、プログラムは「同じです」と出力する必要があります。これは問題ありませんが、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 を 3 間隔のリストに分割する方法を知っていれば、次のように役立つかもしれません。
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.')