실습 · 연습문제 1개
두 가닥, 세 읽기 틀로 번역하기 translate-dna
DNA는 두 가닥이다. 주어진 문자열(5'→3')의 반대 가닥은 문자열을 뒤집고 각 염기를 짝 염기(A↔T, C↔G)로 바꾼 역상보 서열(reverse complement)이다. 또 코돈은 세 염기씩 읽으므로 어디서 읽기 시작하느냐(읽기 틀, reading frame 0·1·2)에 따라 다른 단백질이 나온다.
함수 translate(dna, frame=0, strand="+")를 완성한다.
dna:A·C·G·T로 된 문자열. 소문자도 받는다(대문자로 바꿔서 처리한다).strand:"+"이면dna를 그대로,"-"이면 역상보 서열을 읽는다.frame: 읽을 가닥의 몇 번째 염기(0부터)에서 시작할지. 0, 1, 2 중 하나.- 코돈을 차례로 표준 유전 부호로 번역하고, 정지 코돈을 만나면 멈춘다(정지 코돈은 결과에 넣지 않는다). 끝에 남는 1–2개 염기는 버린다.
- 반환값은 아미노산 한 글자 기호로 된 문자열이다.
표준 유전 부호는 시작 코드에 상수로 주어져 있다. BASES = "TCAG"의 순서로 첫째·둘째·셋째 염기가 번째일 때 코돈이 지정하는 아미노산은 AA[16*i + 4*j + k]이고, *는 정지 코돈이다.
예: translate("ATGGCTTAA")는 "MA", translate("TTAAGCCAT", strand="-")는 "MA"다.
힌트: 역상보는 str.maketrans와 [::-1]로 만들 수 있다.