Last active
July 29, 2018 12:18
-
-
Save Yunaka12/4ce44c6578120786df6170ee2523e47c to your computer and use it in GitHub Desktop.
RNAを読み取って、合成されるタンパク質を求めるプログラム。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
RNA = input() | |
aminosan_list = { | |
"フェニルアラニン":["UUU","UUC"], | |
"ロイシン":["UUA","UUG","CUU","CUC","CUA","CUG"], | |
"イソロイシン":["AUU","AUC","AUA"], | |
"メチオニン":["AUG"], | |
"バリン":["GUU","GUC","GUA","GUG"], | |
"セリン":["UCU","UCC","UCA","UCG"], | |
"プロリン":["CCU","CCC","CCA","CCG"], | |
"トレオニン":["ACU","ACC","ACA","ACG"], | |
"アラニン":["GCU","GCC","GCA","GCG"], | |
"チロシン":["UAU","UAC"], | |
"ヒスチジン":["CAU","CAC"], | |
"グルタミン":["CAA","CAG"], | |
"アスパラギン":["AAU","AAC"], | |
"リシン":["AAA","AAG"], | |
"アスパラギン酸":["GAU","GAC","GAA","GAG"], | |
"グルタミン酸":["GAA","GAG"], | |
"システイン":["UGU","UGC"], | |
"トリプトファン":["UGG"], | |
"アルギニン":["CGU","CGC","CGA","CGG"], | |
"セリン":["AGU","AGC"], | |
"アリギニン":["AGA","AGG"], | |
"グリシン":["GGU","GGC","GGA","GGG"], | |
"終止コドン":["UAA","UAG","UGA"] | |
} | |
#コドンリスト作成関数 | |
def make_codon(s, n=3): | |
result=[] | |
length = len(s) | |
error = False | |
for i in range(0, length, n): | |
kodon = s[i:i+n] | |
if kodon not in aminosan_list["終止コドン"]: | |
result.append(kodon) | |
else: | |
result.append(kodon) | |
return result, error | |
error = True | |
return result, error | |
#コドンリスト解読関数 | |
def read_codon(x): | |
result =[] | |
error = "" | |
for i in range(len(x)-1): | |
aminosan_check = [k for k, v in aminosan_list.items() if x[i] in v] | |
if len(aminosan_check) != 0: | |
aminosan = aminosan_check[0] | |
else: | |
result = [] | |
error = x[i] | |
return result,error | |
result.append(aminosan) | |
return result,error | |
#開始コドンを特定 | |
start = RNA.find("AUG") | |
#コドンリストの作成 | |
RNA_read = RNA[start::] | |
kodon,error_fin = make_codon(RNA_read) | |
#コドンリストの解読 | |
kodon_length = len("".join(kodon)) | |
length_error = False | |
if kodon_length % 3 == 0: | |
protein,error_codon = read_codon(kodon) | |
else: | |
length_error = True | |
#出力 | |
print("\n**読み取り結果**") | |
if start == -1: | |
print("入力されたRNAに開始コドンが存在しません。") | |
print("入力されたRNA : {}".format(RNA)) | |
print("読み取り部位 : {}".format("".join(kodon))) | |
print("コドンリスト : {}".format(kodon)) | |
elif length_error: | |
print("コドンリスト作成時にエラーが発生。") | |
print("開始コドンから終止コドンまでのRNAの長さは3の倍数である必要があります。") | |
print("入力されたRNA : {}".format(RNA)) | |
print("読み取り部位 : {}".format("".join(kodon))) | |
print("開始コドンから終止コドンまでの長さ : {}".format(kodon_length)) | |
print("コドンリスト : {}".format(kodon)) | |
elif protein == []: | |
print("コドンリスト解読時にエラーが発生。") | |
print("入力されたRNA : {}".format(RNA)) | |
print("読み取り部位 : {}".format("".join(kodon))) | |
print("コドンリスト : {}".format(kodon)) | |
print("エラーコドン : {}".format(error_codon)) | |
elif error_fin: | |
print("入力されたRNAに終止コドンが存在しません。") | |
print("入力されたRNA : {}".format(RNA)) | |
print("読み取り部位 : {}".format("".join(kodon))) | |
print("コドンリスト : {}".format(kodon)) | |
else: | |
print("入力されたRNA : {}".format(RNA)) | |
print("読み取り部位 : {}".format("".join(kodon))) | |
print("開始コドンから終止コドンまでの長さ : {}".format(kodon_length)) | |
print("コドンリスト : {}".format(kodon)) | |
print("終止コドン : {}".format(kodon[len(kodon)-1])) | |
print("合成されるタンパク質 : {}".format("-".join(protein))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment