5SOO_O 의 개발 공부 일지

[Python] [ROSALIND] Translating RNA into Protein 본문

자료구조 및 바이오 인포매틱스

[Python] [ROSALIND] Translating RNA into Protein

5soo_o 2022. 4. 7. 16:39

mRNA를 아미노산으로 번역하는 문제이다.

구글링을 해보니 mRNA 코돈을 아미노산으로 번역해 딕셔너리로 정리해 놓은 자료가 있었다 ㅎ

 

codons = {
"UUU" : "F",
"CUU" : "L",
"AUU" : "I",
"GUU" : "V",
"UUC" : "F",
"CUC" : "L",
"AUC" : "I",
"GUC" : "V",
"UUA" : "L",
"CUA" : "L",
"AUA" : "I",
"GUA" : "V",
"UUG" : "L",
"CUG" : "L",
"AUG" : "M",
"GUG" : "V",
"UCU" : "S",
"CCU" : "P",
"ACU" : "T",
"GCU" : "A",
"UCC" : "S",
"CCC" : "P",
"ACC" : "T",
"GCC" : "A",
"UCA" : "S",
"CCA" : "P",
"ACA" : "T",
"GCA" : "A",
"UCG" : "S",
"CCG" : "P",
"ACG" : "T",
"GCG" : "A",
"UAU" : "Y",
"CAU" : "H",
"AAU" : "N",
"GAU" : "D",
"UAC" : "Y",
"CAC" : "H",
"AAC" : "N",
"GAC" : "D",
"UAA" : "Stop",
"CAA" : "Q",
"AAA" : "K",
"GAA" : "E",
"UAG" : "Stop",
"CAG" : "Q",
"AAG" : "K",
"GAG" : "E",
"UGU" : "C",
"CGU" : "R",
"AGU" : "S",
"GGU" : "G",
"UGC" : "C",
"CGC" : "R",
"AGC" : "S",
"GGC" : "G",
"UGA" : "Stop",
"CGA" : "R",
"AGA" : "R",
"GGA" : "G",
"UGG" : "W",
"CGG" : "R",
"AGG" : "R",
"GGG" : "G"
}

 

다운 받은 파일을 열어, \n 을 제외한 나머지 데이터를 리스트에 담는다.

그 다음 생성된 리스트를 문자열로 변환한다.

with open("./rosalind_prot.txt") as file:
    sequence = [i.strip() for i in file.readlines()]
    sequence = ''.join(sequence)

 

 

빈 문자열을 하나 생성한 다음, 입력 받은 문자열을 검사한다.

0번째 인덱스 부터 입력 받은 문자열의 길이 만큼, 3 스텝씩 뛰어서 검사하는데

한 번 검사할 때 3개씩 한 쌍의 코돈을 검사한다.

def translation(seq):
    amino = ''
    for i in range(0, len(seq), 3):
        if codons[seq[i:i+3]] != 'Stop':
            amino = amino + codons[seq[i:i+3]]

    return amino

만약 읽은 코돈이 Stop이 아니라, AUCG의 데이터라면

빈 문자열에 코돈을 담고, 최종 결과물을 반환한다.

728x90