brunch

You can make anything
by writing

- C.S.Lewis -

by 반병현 May 12. 2020

코로나 바이러스 DNA 분석을 자동화할 수 있을까?

박쥐, 천산갑, 그리고 2003년 홍콩 사스 바이러스 유전자

  제목에서 어그로를 좀 끌어 봤다. 사실 코로나바이러스는 DNA가 아니라 RNA를 이용하는 바이러스지만 역전사를 하면 DNA가 되고, NCBI에도 DNA Sequence가 올라와 있어 DNA라고 제목을 표기했다.


  코딩으로 코로나 바이러스의 유전자 연구를 자동화할 수 있을까?


  결론부터 말하면 답은 '예스'다. 물론 이론 영역에서의 연구의 자동화에 해당하며, 이론적으로 도출된 가설을 검증하는 단계는 직접 실험을 거쳐야 할 것이다. 그런데 요즘 사용하는 연구기법들은 워낙에 성능이 뛰어나기 때문에 별도의 실험 검증 없이도 논문이 나오기도 한다. 전국의 대학원생들 화이팅이다.


  이 글에서는 코로나 바이러스 DNA 자동화를 위한 방법들을 소개하고, 이 방법을 사용해 실제로 코로나바이러스의 DNA를 분석한 결과를 소개한다. 사람, 박쥐, 천산갑, 시벳(열대 동물) 등 온갖 동물의 코로나바이러스와 유사점이 있었다.


  이번 글은 Bioinformatics(생물정보학) 접근으로 DNA를 분석하는 과정을 소개한다. 그리고 이 과정들 중에서 코딩으로 자동화할 수 있는 영역에 대해서 소개하도록 하겠다.


  DNA에 대한 기초 정보를 얕게 설명하고 넘어갈 것이므로 전공자들은 스크롤을 빠르게 내리고 중반부부터 보셔도 된다.


DNA, 생명의 암호

  DNA 분석에 대한 이야기이므로 DNA에 대한 이야기를 안 할 수가 없겠다. DNA는 모든 생명체 내부에 존재하는 물질로, 생명체의 유전 정보를 저장하는 역할을 담당한다. 그런데 생명과학을 공부하다보면 이런 생각이 들기도 한다.


  "사실 생물의 본체는 DNA고, 숙주는 오로지 DNA를 복제(번식)하기 위해 움직이는 기계일 뿐이다."


  어쩌면 영혼이라는 존재가 바로 DNA가 아닐런지. 여하튼 생명체는 DNA를 사용해 정보를 저장한다. 바이러스는 생물도 아니면서 DNA(또는 RNA)를 가지고 있다. 바이러스 또한 유전자의 복제를 위해 움직이는 기계에 지나지 않는다고 생각할 수 있겠다. 그렇다면 바이러스가 가진 유전자를 분석하면, 그 바이러스를 이해하는 데에도 더 큰 도움이 되지 않을까?


DNA의 전사와 번역 [1]


  생명체가 DNA에 저장된 정보를 읽어오려면 두 단계의 과정을 거쳐야 한다. 첫 번째는 전사(Transcription)고 두 번째는 번역(Translation)이다. 번역 과정을 잘 이해하면 DNA를 보고 유전자를 뽑아낼 수 있다.



DNA 전사 (Transcription)

  DNA 전사는 위 그림의 좌측 상단에 해당한다. DNA의 일부를 복제해서 RNA로 만드는 과정을 전사라고 한다. DNA에는 총 4가지 종류의 분자가 있다. 이 친구들을 짧게 줄여서 A, T, G, C 라고 부른다.


DNA의 구조 [2]

A는 T와 달라붙고 G는 C와 달라붙는다. 위 그림을 잘 보자. A와 T 사이에 붉은 색 점선이 그려져 있다. 이게 서로를 끌어당기는 현상을 그림으로 표현해 둔 것이다. 유식한 말로는 수소결합(Hydrogen Bond)라고 부른다. DNA는 두 가닥의 실 처럼 생긴 거대한 분자가 이중 나선 형태로 꼬여 있는데, 이 두 가닥의 DNA가 떨어지지 않고 붙어있는 이유가 바로 A-T G-C가 서로를 끌어당기기 때문이다.


  DNA를 구성하는 이 4개의 분자는 일종의 암호를 구성한다. ATGC 4가지 알파벳이 어떤 순서로 이어지느냐에 따라 유전 정보가 결정된다. 생명체는 DNA에 저장된 정보를 해독해 단백질을 만든다.


  DNA에 어떤 정보가 저장되어 있는지, 그 정보가 어떤 단백질의 설계도인지.


  이 두가지가 생명의 본질이다.



번역(Translation)

  DNA를 복제해 RNA를 만드는 과정을 '전사'라고 부른다. 전사된 RNA로부터 암호를 해독하는 과정을 번역이라고 부른다. 번역은 '리보좀'이라는 단백질의 도움으로 일어난다.

전사 과정[3]

  위 그림에서 파랗게 표현된 덩어리가 리보좀이다. 리보좀을 자세히 살펴보면 십자가 같기도 하고 머리핀 같기도 한 까만색 그림이 표현되어 있다. 이 친구들을 tRNA라고 부른다. 리보좀에는 한 번에 3개의 tRNA가 들어갈 수 있다.


  그림에서 tRNA들을 살펴보자. 한 쪽에는 세 개의 알파벳이 기재되어 있고 다른 쪽에는 동그라미를 달고 있다. 동그라미들에는 VAL, LYS, CYS, TYR 등 영어가 적혀 있다. 이 친구들이 바로 그 유명한 아미노산이다. 리보좀이 DNA에 달라붙고, 리보좀 속으로 tRNA가 들어가고, tRNA가 끌고 온 아미노산을 떼어 내 한 가닥씩 이어붙이는 것이 번역 과정이다. 저렇게 아미노산을 하나씩 이어붙이면 단백질이 된다.


  tRNA는 RNA의 알파벳 3개를 읽고, 그 알파벳을 아미노산으로 번역해 주는 도구다. 그런데 왜 하필 알파벳 세개를 사용할까? 그 이유는 아무도 모르지만 수학적으로 생각해 보면 이게 가장 효율적인 방법이다.


  아미노산은 20여 개가 있는데 알파벳 2개의 조합으로 만들 수 있는 경우의 수는 16밖에 안 되므로 아미노산을 표현하기에 모자라기 때문에 알파벳 3개의 조합으로 아미노산을 표현하는 것이 효율적이라고 한다.


코돈 표 [4]

  여튼, 생명체는 알파벳을 3개씩 모아서 아미노산의 정보를 저장한다. 이걸 트리플렛(Triplet)이라고 부른다. 세 개가 묶여서 트리플렛이다. 트리플렛으로 표현되는 암호 체계를 코돈(Codon)이라고 부른다. DNA의 알파벳 조합이 어떤 아미노산으로 암호화되는지 위 표에 전부 나와있다.


  재미있는 점이 하나 있다. RNA의 번역은 항상 AUG에서만 시작한다. DNA로 치면 ATG이다. 그리고 종결 코돈을 만나면 번역이 종료되고 단백질 생성이 중단된다. 종결 코돈은 위 표에서 Stop이라 표기되어 있다.

 

  그러므로 DNA에서 ATG로 시작해 종결 코돈으로 끝나는 지점을 찾아내면 유전 정보가 숨어있는 영역만 뽑아낼 수 있게 되는 것이다.


DNA 서열 분석 방법

  DNA를 분석하는 데에는 다양한 방법이 있다. 그 중 가장 많이 사용되는 BLAST라는 방법을 소개하겠다. BLAST[5]는 Basic Local Alignment Search Tool의 줄임말로, DNA의 염기서열을 서로 매칭해 점수를 매기는 알고리즘이다. 어려운 이야기는 생략하도록 하겠다. 비전공자들은 여기까지 알고 싶어할 것 같지 않고, 전공자들은 이미 이 알고리즘에 대해 너무나도 잘 알고 있을 것이니 말이다.


  DNA를 BLAST에 넣고 돌리면 그 DNA를 분석해서 호몰로지(Homology)를 분석할 수 있다. 호몰로지는 '얼마나 가까운 공통 조상을 두고 있느냐'에 대한 분석이라고 생각하면 된다. BLAST 결과 A 유전자와 B 유전자가 호몰로지가 높다면, A와 B는 가까운 공통 조상에서 변이 또는 진화해 둘로 갈라졌다는 뜻으로 생각하면 된다.


  바꿔 말하면, BLAST를 돌리면 내가 연구하고 싶은 DNA와 공통 조상을 둔 유전자들을 한 번에 찾아낼 수 있다는 뜻이다. 얼마나 유용한 툴인가!


  미국의 NCBI(국립 생명공학 정보센터)에서는 방대한 유전자 데이터베이스를 확보하고, 이를 토대로 한 블라스트 시스템을 무료로 제공하고 있다.



  생명을 분석하기 위한 도구는 이미 다른 사람들이 튼튼하게 확보해 뒀으니, 우리는 바이러스 DNA를 분석해 유전자에 해당하는 부분만 찾아내어 블라스트를 돌리면 된다. 이외에도 HMMER 등 유용한 툴이 많지만 대체로 블라스트 선에서 정리된다. 블라스트는 그야말로 세계관 최강자다. 내가 지금껏 본 모든 논문을 통틀어 피인용수도 가장 많다. 블라스트 만드신 분 노벨상 받으셨나?


코로나(Covid-19) DNA 정보

  코로나19의 DNA정보는 NCBI에서 쉽게 찾을 수 있었다.


코로나바이러스 DNA 서열 일부[6]

  이걸 그대로 FASTA 형태로 긁어오자. FASTA는 유전자나 단백질 서열을 표기하기 위한 방법 중 하나다.



  코로나바이러스의 유전정보를 긁어온 파일을 첨부한다. 확장자를 txt로 바꾸거나 메모장에서 열면 내용물을 볼 수 있다. ATGC 4개의 알파벳이 어지러이 기재되어 있다. 이 파일을 분석하고 쪼개면 된다.



  DNA 정보를 분석해 유전자만 뽑아주는 툴은 이미 만들어 뒀다. 상상텃밭에서는 생명공학 연구에 이 툴을 활발하게 사용하고 있다. 코드 내부까지 상세히 리뷰했다간 생물에 관심 있는 독자들 다 떠나갈 것 같으니 생략하고, 이걸 이용해 유전자를 분석하는 과정을 실습해 보겠다.


  이 코드는 파이썬만 깔려 있으면 돌아간다. Git bash를 이용해 실행해 볼 것이다. 내가 예전에 쓴 글을 따라하면 이 코드를 돌리기 위한 환경이 구비된다. 먼저 레포지토리를 클론하자.


  > git clone https://github.com/needleworm/base_sequence_analysis


  폴더 내부에 fasta 파일을 복사해 주자. 열려 있는 깃 배쉬에 아래 명령어를 입력해 디렉터리로 이동한다.


  > cd base_sequence_analysis


  깃 배쉬에서 iPython을 불러와 인터랙티브하게 작업을 수행해 보겠다. 일반 파이썬은 스크립트 실행만 되지만 iPython은 정상적으로 작동한다. 혹시 iPython이 깔려있지 않다면 아래 명령어를 이용해 설치해 주자.


  > pip install ipython


  ipython은 아래 명령어로 실행할 수 있다.


  > ipython


  준비는 모두 끝났다. 코드를 돌려 보겠다.



  라이브러리를 불러오자.


  >>> import sequence_analizer as sa


  끝났다. 정말이다. 이제 분석을 위한 클래스를 생성한다.


  >>>  analizer = sa.sequence_analizer("covid19.fasta")


  여기서 파일명을 지정해 둬야 한다. 코로나 바이러스 DNA 정보는 레포지토리에 함께 올려 두었으니 위 코드를 그대로 따라 적으면 실습을 해 볼 수 있다.


  이제 아래 코드를 입력하자. 심호흡을 하고, 엔터키를 누르자.


  >>> analizer.save_result_as_FASTA_format()


  끝났다. 정말로. 코드 세 줄로 끝이다. 코로나 바이러스 DNA에 있는 유전자 암호를 분석하는 자동화가, 겨우 코드 세 줄로 실현됐다. 여러분, 이게 제가 만든 소프트웨어입니다!


코드 실행 결과

  "covid_19_GENE.fasta"는 DNA에서 단백질로 전사될 수 있는 부분만 뽑아서 정리한 것이고, "covid19_PROTEIN.fasta"는 코로나바이러스가 생산할 수 있는 모든 단백질들을 뽑아내 정리한 것이다. 위에서 뽑은 DNA를 컴퓨터가 트리플렛 단위 번역을 수행해 DNA를 단백질로 변환해 놓은 것이다.



  위 과정을 손으로 하나하나 했다면 몇 달이 걸렸을지 모르는 일이지만 코딩으로 하면 0.3초면 충분하다. 이게 상상텃밭의 자동화 철학이기도 하다. 단순노동은 기계한테 다 떠넘겨버리고 생각하는 데 시간을 많이 쏟는 것 말이다. 이 철학에 동조하는 분들이 상상텃밭에 많이 지원해주면 좋겠다. 함께 일하면 즐거울텐데.



  요즘에는 대부분의 연구실이 자체적으로 만든 자동화 코드를 이용해 분석을 단순화하고 있다.


  "이건 5년 전에 박사학위를 따고 떠나신 선배님이 만든 코드야."


  대학원생들은 이렇게 물려받은 코드 한두개쯤은 흔하게 만나봤을 것이다.


  현대에 이르러 DNA분석을 손으로 하는 경우는 거의 없어졌다고 봐도 무방하다. 속도전에서 컴퓨터와 싸움이 되지 않기 때문에. 특히 이번 코로나 판데믹 사태 같은 경우 전 세계 연구진들이 이런 코드를 돌리면서 분석 전쟁에 뛰어들고 있다.



  컴퓨터가 분석한 결과를 한 번 열어보자.

  

유전자 분석 결과의 최하단

  코로나바이러스의 DNA에서는 총 636가지 종류의 번역 가능한 유전자가 나왔다. 여기서 길이가 너무 짧은 녀석들은 날려버려도 될 것이다.


단백질 분석 결과의 일부

  DNA단에서 길이가 지나치게 짧은 녀석들은 단백질 단에서 보면 그냥 문제가 있어 보인다. 아미노산 5개나 3개로 이루어진 사슬은 그냥 지나쳐도 되지 않겠나?


  분석 결과 파일은 바로 NCBI에서 BLAST를 실시할 수 있다. 블라스트 페이지로 이동해보자.





BLAST 화면

  NCBI BLAST 화면에서 바로 fasta 파일을 업로드할 수 있다. 아니면 파일 내용물을 전체 복사해서 위의 커다란 상자에 붙여넣기 해도 좋다. 그런데 위 스크린샷대로 하면 에러가 난다. 단백질용 블라스트에 유전자 fasta를 넣었기 때문이다. BLASTn에서 돌려 보자.


  단순업무가 아니라 생각에 시간을 많이 쏟아야 하지 않겠나. 스크린샷을 다시 찍기 귀찮아서 수정하지 않고 두겠다. 흠흠.


블라스트 구동 화면

  블라스트가 돌아가는 동안 위와 같은 창이 자동으로 새로고침되면서 우리를 반겨준다. 한 번에 몇백개나 되는 DNA 시퀀스를 때려넣었으니 시간이 좀 오래 걸릴 것이다. 퇴근할 무렵 즈음에 블라스트를 걸어두고 출근해서 결과를 확인하자.


  


  전체 결과를 기다리기는 너무 오랜 시간이 걸릴 것 같으니 아무 유전자 한 개만 블라스트를 돌려 보겠다.


>Sequence 537

MLLLKSVNFNFVMIHFWVFITTKTTKVGWKVSSEFILVRIIALLNMSLSLFLWTLKENRVISKILGNLCL

RILMVILKYILSTRLLI


sequence 537 결과

  Sequence 537의 경우 Blast 결과가 없다. 그동안 보고된 단백질 중에 이와 유사한 것이 없다고 생각하면 된다. 이럴 경우 가능성은 두 가지가 아닐까?


  1. Sequence 537은 다른 생명체에서 발견되지 않으므로 아무 쓸모없는 단백질이다.

  2. Sequence 537은 코로나19가 가진 미지의 영역 중 하나고, 연구되어야 할 필요가 있다.


  다른 결과들도 몇 가지 가져와 보겠다.



Sequence 518의 경우


  Covid 19 이외의 결과물이  두 개 잡혔다. E-value가 상당히 낮다. 이럴 경우, 이 녀석들은 가까운 공통조상을 두고 분화한 것으로 추측할 수 있겠다.


  SARS Coronavirus Shanhgai LY 는 2003년 홍콩 사스 바이러스다.[7]


  두 칸 아래의 SARS coronavirus sf098 역시 사스 바이러스의 일종인 것 같다. [8] 상세한 발병년도는 나오지 않는다. 숙주가 인간이라고 하네.


  뉴스에서 보면 "이번 코로나바이러스가 사스와 유사점이 많다." 고 하지 않은가? 내가 자취방에서 태블릿으로 3분만에 분석한 결과에서도 같은 결과가 나왔다. 생명과학을 제대로 하려면 코딩을 안 할 수가 없는 세상이다.



박쥐 코로나바이러스???

  Sequence 604의 경우 박쥐 코로나바이러스와 유사성이 등장했다.


>Sequence 604

MRIFTIGTVTLKQGEIKDATPSDFVRATATIPIQASLPFGWLIVGVALLAVFQSASKIITLKKRWQLALS

KGVHFVCNLLLLFVTVYSHLLLVAAGLEAPFLYLYALVYFLQSINFVRIIMRLWLCWKCRSKNPLLYDAN

YFLCWHTNCYDYCIPYNSVTSSIVITSGDGTTSPISEHDYQIGGYTEKWESGVKDCVVLHSYFTSDYYQL

YSTQLSTDTGVEHVTFFIYNKIVDEPEEHVQIHTIDGSSGVVNPVMEPIYDEPTTTTSVPL


  이러니까 박쥐를 거쳐 사람에 옮기는 질병으로 진화했다는 이야기가 나온거구나.



  Sequence 629도 재미있는 결과가 나왔다.


>Sequence 629

MWLSYFIASFRLFARTRSMWSFNPETNILLNVPLHGTILTRPLLESELVIGAVILRGHLRIAGHHLGRCD

IKDLPKEITVATSRTLSYYKLGASQRVAGDSGFAAYSRYRIGNYKLNTDHSSSSDNIALLVQ


박쥐, 천산갑

  박쥐 사스 바이러스와 천산갑 코로나바이러스가 등장했다. 이러니까 천산갑에서 인간에게 옮겼다는 이야기도 등장한 것이구나.


이어지는 분석결과

  그런데 분석결과를 더 내려보니 사스를 비롯한 코로나바이러스의 전반적인 특징이 아닌가 싶기도 하다. 일단 이 시퀀스는 인간, 박쥐, 천산갑, 시벳(열대 동물), 관박쥐류 코로나 바이러스에서 광범위하게 발견되는 유전자다. 바이러스 표면에 붙어 있는 단백질이기도 하고.



  이쯤 분석하니 뉴스에서 나온 결과랑 일치하는 자료가 너무 많아서 식상해졌다. 마지막으로 하나만 돌려 보려고 했는데 이런 결과가 나왔네.


>Sequence 640

MKFLVFLGIITTVAAFHQECSLQSCTQHQPYVVDDPCPIHFYSKWYIRVGARKSAPLIELCVDEAGSKSP

IQYIDIGNYTVSCLPFTINCQEPKLGSLVVRCSFYEDFLEYHDVRVVLDFI


시퀀스 640 결과

  글리코겐을 축적시킨다는 모 박테리아[9], 베타프로테오박테리아 등 여러 종류의 세균들과 조개. 비슷한 바이러스가 아니라 세포를 이루고 있는 제대로 된 생명체들과 공통된 특징이 나왔다. 아 이거 좀 소름돋네.



  DNA 분석을 자동화하는 코드를 활용해 방구석에서 코로나바이러스 DNA를 연구해 봤다. 이게 생각보다 재미도 있고 중독성도 있어서 자꾸만 하나씩 더 검색해보고 싶어지게 만드는 매력이 있다.


  코드를 사용해 보고 싶은 분께서는 이 레포지토리로 들어가 보시라. Star 정도는 눌러주시기 바란다.




  분석해 본 결과는 2003년 홍콩 사스바이러스 같이 대유행[10]을 했던 바이러스 유전자와 박쥐, 천산갑, 시벳 코로나바이러스와 유사점이 많았다. 뉴스를 보니 에이즈 유사 유전자도 있다고 하는데 내가 검색했던 시퀀스에서는 뜨지는 않더라.


  농부가 방구석에서 분석한 결과이니 너무 신뢰하지는 말자. 대단한 분석도 절대 아니다. 바이오쪽 전공자들은 다들 이 정도는 쉽게한다.


  시간적 여유가 된다면 모든 시퀀스를 다 검색해 봐도 재밌을 것 같다.



  상상텃밭에서는 생명공학 연구를 위해 이 코드를 활용하고 있었다. 이 정도 스케일의 분석은 10분 정도면 충분하다.



References

[1] 미국 국립보건원 산하 국립암센터 https://www.cancer.gov/publications/dictionaries/cancer-terms/def/translation

[2] Pray, L. (2008) Discovery of DNA structure and function: Watson and Crick. Nature Education 1(1):100

[3] http://lindsayhighbiologyproject.blogspot.com/2013/02/importance-of-translation-in-protein.html

[4] https://www.researchgate.net/figure/The-codon-table-The-genetic-code-is-composed-of-four-different-letters-U-C-A-and-G_fig2_267702580

[5]Altschul, Stephen F., et al. "Basic local alignment search tool." Journal of molecular biology 215.3 (1990): 403-410.

[6] https://www.ncbi.nlm.nih.gov/nuccore/NC_045512

[7] https://eid2.liverpool.ac.uk/Organisms/Details/3702445

[8] https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=264990

[9] Albertsen M, McIlroy SJ, Stokholm-Bjerregaard M, Karst SM, Nielsen PH. "Candidatus Propionivibrio aalborgensis": A Novel Glycogen Accumulating Organism Abundant in Full-Scale Enhanced Biological Phosphorus Removal Plants. Front Microbiol. 2016;7:1033. Published 2016 Jul 4. doi:10.3389/fmicb.2016.01033

[10] https://www.voakorea.com/archive/35-2003-08-12-8-1-91121614





매거진의 이전글 코딩으로 생명공학 연구를 자동화 할 수 있을까?

매거진 선택

키워드 선택 0 / 3 0
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari