1C 역상보 문제

 

개요

핵산의 방향성

핵산(nucleic acid)인산-당-염기 라는 하나의 단위가 뉴클레오타이드(nucleotide) 를 이루며, 이러한 뉴클레오타이드가 여러 개 모여서 형성된 것이다.


Fig 1. The Structure of the Nucleotide

즉, nucleotide는 분자에 의해 인산과 염기가 연결된다. 이러한 당의 종류로 Ribose 또는 Deoxyribose가 있는데, 이들은 각각 RNA 또는 DNA의 nucleotide를 구성한다. 이 두 종류의 당은 5개의 탄소 원자로 구성되어 5탄당이라 하는데, 다음과 같이 각각의 탄소에 1번부터 5번까지의 번호를 매긴다. 두 당은 그 구조와 화학식이 서로 유사하지만, Ribose에는 2’의 위치에 hydroxyl group(2’-OH)이, Deoxyribose에는 2’의 위치에 hydrogen(2’-H)이 존재한다.


Fig 2. The Types of Sugars in the RNA & DNA - Deoxyribose(left) and Ribose(right)

따라서 핵산의 방향성은 염기와 인산을 결합하는 당의 방향성에 의해 결정된다. 하나의 단일 뉴클레오타이드에서, 인산은 당의 5’에 위치한 탄소와 결합되며, 서로 다른 두 개의 뉴클레오타이드는 첫 번째 뉴클레오타이드 당의 3’ 위치에서 다음 뉴클레오타이드 당의 5’에 결합된 인산과 공유결합1한다. 그러므로, 생물학에서 핵산의 방향성을 이야기 할 때, “5’ → 3’의 방향성을 가진다” 고 말한다.


Fig 3. A single strand of DNA

핵산의 상보성

한편, 핵산에서 염기는 일반적으로2 4종류의 염기를 가진다. DNA에서는 A, T, G, C를, RNA에서는 T 대신 U를 가진다. 이러한 4종류의 염기는 DNA나 RNA가 이중 가닥을 이룰 때 서로 상보적으로 수소 결합한다. 즉, 4종류의 염기 중 2가지가 서로 짝을 이루어 수소결합을 하며, 이를 상보적 이라 한다.

수소결합은 분자를 이루는 원자 중 전기음성도가 강하고 크기가 작은 F, O, N이 인접한 수소와 분자 간 쌍극자 힘에 의해 인력을 가지는 현상을 말한다. 염기에서는 아래의 그림과 같이 질소와 산소가 수소 결합을 할 만큼 충분히 존재하며, 여러 위치 에서 수소 결합이 일어날 수 있다.

그 중 일반적인 경우에 형성되는 주요한 수소 결합을 Watson-Crick base-paring(Canonical base-paring)3이라 하며, A와 T(U)가 2개의 수소 결합을, G와 C가 3개의 수소 결합을 이룬다.


Fig 4. Watson-Crick base-paring

역상보 서열

앞선 핵산의 방향성과 상보성을 고려하여, 역상보 서열이 무엇인지 알아보도록 하자.

DNA가 이중 나선을 이룰 때, 상보성에 의해 각 가닥의 방향성이 정해진다. 즉, 어떤 한 가닥의 DNA가 이루는 방향이 5’ → 3’으로 진행된다고 할 때, 또 다른 한 가닥의 DNA 역시 5’ → 3’ 의 방향성을 가진다. 이 두 가닥이 상보성에 의해 수소결합을 이루게 되면 다음의 그림과 같이 각 가닥이 서로 반대 방향으로 진행된다.

그러므로, 우리는 어떤 임의의 서열을 읽을 때, 기준 방향을 5' → 3'으로 정하고 그 서열을 읽는다.


Fig 5. A complementary sequence that progresses in the reverse direction

한 가지 예시를 들어보자. 임의의 서열 “ACTGAT”가 있다고 할 때, 이 서열의 상보적인 서열은 “TGACTA” 가 된다. 그러나, 방향성을 고려하여 표시하면 다음과 같다.

5’ - ACTGAT - 3’

3’ - TGACTA - 5’

우리는 이 두 서열을 읽을 때, 주어진 5’→3’의 가닥을 주형 가닥(template strand) 이라 하고, 그 반대편의 가닥을 상보적인 가닥(complementary strand) 라 한다. 위 두 예시 서열을 기준 5’ → 3’의 방향으로 읽으면, 다음과 같이 읽을 수 있다.

5’ - ACTGAT - 3’

5’ - ATCAGT - 3’

이때, 주어진 주형 가닥에 대해 5’ → 3’ 의 방향으로 읽은 상보적인 서열을 “역상보 서열” 이라 한다.

따라서 이번 문제에서는 주어진 서열에 대한 역상보 서열을 찾아보도록 한다.

Problem

  • Input: DNA 서열
  • Output: 역상보 서열
  • function: 주어진 DNA 서열에 대한 역상보 서열 찾기

Pseudo-code

ReverseComplement(seq)
    complement = '' * |seq|
    
    for i <- 0 to |seq|:
      if seq[i] == 'A': complement[i] = 'T'
      else if seq[i] == 'T': complement[i] = 'A'
      else if seq[i] == 'G': complement[i] = 'C'
      else if seq[i] == 'C': complement[i] = 'G'
      else raise error
    
    reverseComplement = '' * |seq|
    
    for i <- 0 to |seq|:
        reverseComplement[i] = complement[|seq| - 1 - i]
    
    return reverseComplement

Evaluation

Time Complexity

입력 크기: $\left\vert seq \right\vert = n$

  • line[2]: 상보적인 서열을 저장할 변수 complement 초기화 → $O(1)$​
  • line[4]: 주어진 입력 서열 seq의 모든 문자열(염기)를 순회 → $O(n)$
  • line[5] ~ line[9]: 해당 순번의 염기 서열에 상응하는 상보적 서열을 complement에 저장 → $O(1)$
  • line[11]: 역상보 서열을 저장할 빈 문자열 변수 reverseComplement 초기화 → $O(1)$
  • line[13] ~ line[14]: 상보 서열의 모든 문자열을 순회하면서 뒤집어서 저장 → $O(n)$

  • 모든 경우에 대해, 최악의 경우와 최선의 경우가 존재하지 않으며, 모든 문자열을 순회해야 correct solution이 도출됨.
  • 따라서, 다음 알고리즘은 항상 일정한 시간복잡도를 가지는 알고리즘임

Total Time Complexity: $O(1) + O(n) \times O(1) + O(1) + O(n) \approxeq O(n)$

Implementation

# 주어진 서열을 상보적인 서열로 바꿔 반환하는 함수
def Complement(seq, reverse=False):

    # 상보적인 서열이 어떤 것인지 저장하는 dictioinary 선언
    basepair = {'A' : 'T', 'T': 'A', 'G' : 'C', 'C' : 'G'}
    
    # 반환할 상보적 서열 문자열 변수 선언
    CompSeq = ''
    
    # 입력 서열의 각 문자 하나씩에 대한 상보적인 문자를 추가함. 
    # A, T, G, C 가 아닌 다른 염기에 대한 상보적인 서열은 '?'로 추가
    for base in seq:
        CompSeq += basepair.get(base, '?')

    # reverse 매개변수를 참으로 받을 때 역상보 서열을 반환 (5' -> 3')
    if reverse: return CompSeq[::-1]
    
    # 그렇지 않으면 상보 서열만 반환 (3' -> 5')
    else: return CompSeq

Discussion Points

Summary

  1. 임의의 DNA/RNA는 일반적인 경우 서로 상보적 인 서열을 가지고 있다.
  2. 각 DNA/RNA는 방향성을 가지고 있으며, 생물학에서 이를 읽는 기준 방향을 5' → 3' 으로 한다.
  3. 주어진 주형 가닥에 대한 상보적인 서열을 기준 방향으로 읽었을 때 역상보 서열 이라 한다.

Implementation Strategy

  1. 주어진 서열의 상보적인 서열을 구한다.
  2. 상보적인 서열을 반대 방향으로 읽는다.

Implications

  • 책의 예시에서, Vibrio cholerae 의 가장 빈번한 상위 4개 9-mer가 “ATGATCAAG”, “CTTGATCAT” 임
  • 이 두 서열은 서로 역상보 서열의 관계에 있으며, DnaA box를 구성할 것이라는 가설을 이끌 수 있음
  • 실제로 DnaA box에 결합하는 DnaA 단백질은 DNA의 주형 가닥에 결합할 지, 상보적 가닥에 결합할 지 구분하지 않음
  • 즉, 역상보 서열이 유전체에 존재하는 것은, 그 서열과 그 서열의 역상보 서열이 DnaA box를 구성할 것이라는 가설을 지지함

Reference

  1. Compeu, P., Pevzner, P. (2018). Bioinformatics Algorithms 3/e. 에이콘 출판사
  2. Craig, N., Cohen-Fix, O., Green, R., Greider, C., Storz, G., & Wolberger, C. (2010). Molecular biology: Principles of genome function. Oxford University Press.

  1. 이러한 공유결합을 phospho-diester bond라 한다. 

  2. 일반적이지 않은 경우, chemical modificatioin이 일어난 기타 종류의 염기를 가진다. pseudo-uridine, m6A 등의 예시가 있다. 

  3. 앞선 각주 1에서 언급된 바와 같이, chemical modification이 일어난 염기나, 기타 DNA/RNA의 구조적 특징에 의해 새로운 수소 결합의 종류가 존재한다.(Non-canonical base-pairing