29.1 ML 연구자를 위한 분자생물학 기초

실습 · 연습문제 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"의 순서로 첫째·둘째·셋째 염기가 i,j,ki, j, k번째일 때 코돈이 지정하는 아미노산은 AA[16*i + 4*j + k]이고, *는 정지 코돈이다.

예: translate("ATGGCTTAA")는 "MA", translate("TTAAGCCAT", strand="-")는 "MA"다.

힌트: 역상보는 str.maketrans와 [::-1]로 만들 수 있다.