Skip to content

Instantly share code, notes, and snippets.

@Yunaka12
Last active July 29, 2018 12:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Yunaka12/4ce44c6578120786df6170ee2523e47c to your computer and use it in GitHub Desktop.
Save Yunaka12/4ce44c6578120786df6170ee2523e47c to your computer and use it in GitHub Desktop.
RNAを読み取って、合成されるタンパク質を求めるプログラム。
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