ProblèmeARNm déduisant de protéines Rosalind
Pour aa positifs des nombres entiers et nn, nn aa modulo (amodnamodn écrit en abrégé) est le reste quand aa est divisé par nn. Par exemple, 29mod11 = 729mod11 = 7 parce que 29 = 11 × 2 + 729 = 11 × 2 + 7.
L'arithmétique modulaire est l'étude de l'addition, de la soustraction, de la multiplication et de la division par rapport à l'opération modulo. Nous disons que aa et bb sont congrus modulo nn si amodn = bmodnamodn = bmodn; dans ce cas, nous utilisons la notation a≡bmodna≡bmodn. Deux faits utiles dans l'arithmétique modulaire sont que si a≡bmodna≡bmodn et c≡dmodnc≡dmodn, alors a + c≡b + dmodna + c≡b + dmodn et a × c≡b × dmodna × c≡ b × dmodn. Pour vérifier votre compréhension de ces règles, vous pouvez vérifier ces relations pour a = 29a = 29, b = 73b = 73, c = 10c = 10, d = 32d = 32 et n = 11n = 11. Comme vous le verrez dans cet exercice, certains problèmes de Rosalind demanderont une (très grande) solution entière modulo un plus petit nombre pour éviter les pièges calculatoires qui se produisent avec le stockage de tels grands nombres.
Donné: Une chaîne de protéines de longueur au plus 1000 aa. Retour: Le nombre total de chaînes d'ARN différentes à partir desquelles la protéine aurait pu être traduite, modulo 1,000,000. (Ne pas négliger l'importance du codon d'arrêt dans la traduction des protéines.)
échantillon Dataset
MA
Exemple de sortie
Ma réponse est toujours à zéro. Je me rends compte qu'il y a un problème avec la façon d'utiliser mod mais je ne sais pas exactement ce que c'est.
rna_table = {"UUU":"F", "UUC":"F", "UUA":"L", "UUG":"L",
"UCU":"S", "UCC":"s", "UCA":"S", "UCG":"S",
"UAU":"Y", "UAC":"Y", "UAA":"STOP", "UAG":"STOP",
"UGU":"C", "UGC":"C", "UGA":"STOP", "UGG":"W",
"CUU":"L", "CUC":"L", "CUA":"L", "CUG":"L",
"CCU":"P", "CCC":"P", "CCA":"P", "CCG":"P",
"CAU":"H", "CAC":"H", "CAA":"Q", "CAG":"Q",
"CGU":"R", "CGC":"R", "CGA":"R", "CGG":"R",
"AUU":"I", "AUC":"I", "AUA":"I", "AUG":"M",
"ACU":"T", "ACC":"T", "ACA":"T", "ACG":"T",
"AAU":"N", "AAC":"N", "AAA":"K", "AAG":"K",
"AGU":"S", "AGC":"S", "AGA":"R", "AGG":"R",
"GUU":"V", "GUC":"V", "GUA":"V", "GUG":"V",
"GCU":"A", "GCC":"A", "GCA":"A", "GCG":"A",
"GAU":"D", "GAC":"D", "GAA":"E", "GAG":"E",
"GGU":"G", "GGC":"G", "GGA":"G", "GGG":"G"}
with open("rosalind_mrna.txt") as myfile:
data = myfile.readlines()
charData = list(data[0].strip())
frequency_list = {};
for k,v in rna_table.items():
if not frequency_list.has_key(v):
frequency_list[v] = 1
else:
frequency_list[v] += 1
answer = frequency_list['STOP'];
for aa in charData:
answer = ((answer * frequency_list[aa]) % 1000000)
print "Answer is:\n"
print answer % 1000000
comment peut on ne néglige pas l'importance du codon stop dans la traduction des protéines? – PRMoureu
Voir le problème original à http://rosalind.info/problems/mrna/ - le formatage est un peu plus agréable. –
A quoi ressemble votre fichier d'entrée? Est-il possible que vous ayez une ligne vide au début? –