J'écris un programme qui lit un certain nombre de caractères d'ADN (qui est toujours divisible par 3) et vérifie s'ils correspondent au même acide aminé. Par exemple AAT et AAC correspondent tous les deux à N donc mon programme devrait imprimer "C'est pareil". C'est très bien mais je ne sais pas comment comparer 6/9/12/un multiple de 3 et voir si les définitions sont les mêmes. Par exemple:Comparer des chaînes à un dictionnaire par groupes de multiples de 3
AAAAACAAG
AAAAACAAA
Devrait me renvoyer C'est pareil qu'ils sont tous les deux KNK.
Voici mon code:
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!')
Et la structure de mon codon_amino.txt est structuré comme:
AAA K
AAC N
AAG K
AAT N
ACA T
ACC T
ACG T
ACT T
Comment puis-je comparer les structures d'ADN dans bagouts de 3? Je l'ai pour des cordes qui ont 3 lettres de long mais ça renvoie une erreur pour quoi que ce soit de plus.
EDIT:
Si je savais comment diviser a et b dans une liste qui était à des intervalles de trois qui pourraient aider ainsi comme:
a2 = a.split(SPLITINTOINTERVALSOFTHREE)
alors je pourrais facilement utiliser une boucle à itérer à travers eux, mais comment puis-je les séparer en premier lieu?
EDIT: LA SOLUTION:
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.')
Essayez-vous de diviser "AAAAACAAG" en ['AAA', 'AAC', 'AAG']? – badc0re
Votre solution éditée n'a pas beaucoup de sens pour autant que je sache. Veuillez regarder à nouveau la solution acceptée. – Josay