通報推測するmRNAの正の整数AA nnは、AAモジュロNN(速記で書かamodnamodn)はAAがNNで割った余りであるためのタンパク質ロザリンド
から。例えば、29 = 11×2 + 729 = 11×2 + 7であるから、29mod11 = 729mod11 = 7となる。
モジュラ演算は、モジュロ演算に関する加算、減算、乗算、および除算の研究です。 amodn = bmodnamodn = bmodnならば、aaとbbは一致したnnであると言う。この場合、a≡bmodna≡bmodnの表記を使用します。
モジュラ演算の2つの有用な事実は、a≡bmodna≡bmodnおよびc≡dmodnc≡dmodnの場合、a +c≡b+ dmodna +c≡b+ dmodnおよびa×c≡b×dmodna×c≡ b×dmodn。これらのルールの理解を確認するには、a = 29a = 29、b = 73b = 73、c = 10c = 10、d = 32d = 32、n = 11n = 11の関係を確認してください。
この演習では、いくつかのロザリンド問題は、このような大きな数を格納することによって生じる計算上の落とし穴を避けるために、より小さな数を法とする(非常に大きな)整数解を求めます。
与えられる:長さが1000aa以下のタンパク質ストリング。
リターン:蛋白質が翻訳された可能性のある異なるRNAストリングの総数(モジュロ1,000,000)。 (タンパク質翻訳における終止コドンの重要性を無視しないでください。)私の答えは常にゼロに設定されている
サンプルデータセット
MA
サンプル出力。 modを使用する方法にいくつかの問題があることを認識していますが、正確なものは何か分かりません。
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
どのようにすることができますタンパク質翻訳において終止コドンの重要性を無視しないでください。 – PRMoureu
http://rosalind.info/problems/mrna/の元の問題を参照してください。フォーマットは少し面白いです。 –
入力ファイルはどのように見えますか?冒頭に空の行がある可能性はありますか? –