2016년 4월 29일 금요일

유전체 서열을 이용한 세균의 종(species) 동정

인간은 패턴을 인식하고 구별하는데 특화된 시각과 지적 능력을 갖고 있다. 새로운 대상을 만났을 때 이것이 적인지 혹은 우호적인 대상인지를 빨리 찾아내기 위한 능력이 오랜 시간을 거쳐 진화해 오면서 지금에 이르지 않았나 싶다. "생각하는 인간" "노는 인간"과 비슷하게 "구별하는 인간(특히 단순한 이분법적인 구별)"을 희화화하여 표현하는 방법으로 Homo dichotom.. 어쩌구 하는 학명을 만들면 재미있을 것이다. 안타깝게도 나의 라틴어 실력은 사실상 제로 상태라서 어떤 말을 쓰면 좋을지를 모르겠다.

형태적으로 구별이 거의 불가능한 미생물을 연구하는 사람들에게는 이를 정확히 동정하여 편을 나누는 것이 매우 중요한 일이다. 이것은 꽤 오랜 전통과 나름대로의 학문적 체계를 갖춘 분야이다. 2004년 말부터 차세대 염기서열 해독 기술이 눈부시게 발전하여 미생물의 분류학 또는 계통발생학(taxomony - phylogeny - systematics: 이 세 용어를 정확하게 구별하는 일도 쉽지는 않다!)도 데이터의 바다 속에 풍덩 빠져들게 되었다.

나처럼 컴퓨터만 가지고서 생물학을 연구하는 사람에게 전통적인 원핵생물의 종 구분 기술인 DNA-DNA hybridization은 꿈만 같은 이야기이다. 대신 유전체 서열을 이용하여 가지고 놀 거리는 점점 많아지고 있다. 가장 쉽게 미생물의 동정을 위해 택하는 기술은 16S ribosomal RNA gene 염기서열을 이용하는 것이다. 어떤 primer를 쓰는 것이 NGS 시대에 가장 적합한가에 대한 논의는 이미 활발하다. 이렇게 얻은 서열 정보를 가지고 알 수 있는 것은 무엇인가? 대략 97% 이상의 pairwise similarity를 넘지 못하면 서로 다른 종으로 본다는 것이다. 그보다 높은 값은 동일 종일 수도 있고, 그렇지 않을 수도 있다. 16S rRNA 서열을 검색해서 top hit로 나온 것의 종명을 같다 붙이는 경우가 의외로 많은데, 이는 엄밀히 말하자면 옳지 않다. 다만 type strain(표준 균주)가 아닌 경우 그 누구도 문제를 제기하지 않을 뿐이다. 어쨌든 이러한 분석을 하는 데에는 천연구소(Chun Lab)의 ExTaxon이 너무나 유명하다.

여기서 잠깐 사족을 붙여본다. ATGC라는 단지 4가지의 문자로 구성된 DNA 서열을 비교하면서 similarity라는 표현을 쓰는 것은 적합하지 않다고 생각한다. 화학적 특성에 따라 구분 가능한(또 구분, 구별이 나온다) 아미노산 서열이라면 모르겠지만 말이다. 따라서 핵산에 대해서는 identity라고 하는 것이 적합할 것이다.

유전체 정보를 사용해서 가까운 균주를 알아내는 또 다른 방법은 RAST 서버에서 자동 주석화를 실시한 뒤 closest neighbor 목록을 확인하는 것이다. 여기에서는 몇 개의 marker gene을 이용하여 가장 가까운 균주(물론 유전체 염기서열 해독이 된)를 찾아준다. 일종의 MLST에 의한 작업인데, score의 의미 또는 사용된 유전자의 수가 몇 개인지는 잘 모르겠다. PubMLST 사이트를 이용하면 각 종에 대해서 이미 수립된 MLST 데이터베이스를 이용할 수 있다.

다음으로는 specI라는 것이 있다. 모든 미생물에 분포하는 것으로 알려진 40종의 COG를 이용하여 가장 가까운 균주를 찾아주는 것이다. 확장된 MLST라고나 할까? 웹 서버가 있어서 이를 종종 사용하는데, 문제는 급격히 늘어나는 유전체 정보를 지속적으로 추가하여 DB를 업데이트하지 않는다는 것이다. 어쩌면 서비스를 종료할지도 모른다! 오늘은 웹 서버에 공개된 소스를 받아다가 자체적인 DB를 만드는 작업을 시작해 보려고 세팅을 건드리는 작업을 하였다. NCBI의 RefSeq에서 모든 박테리아의 유전체 서열을 지난 4월 초에 약 5일에 거쳐서 받아 두었었다. 약 6만개가 넘는 엔트리를 보유하고 있는데, 이는 계속 늘어나고 있으므로 지속적인 업데이트가 필요하다. 새로 올라온 엔트리만 가져올 수 있도록 일종의 incremental download를 해 주는 스크립트를 짜서 테스트를 완료해 놓았다. 최신 데이터를 사용하여 자체 DB를 만드는 것이 가능한지를 알아보는 중이다.

웹을 뒤져보니 JSpecies 말고 리눅스 환경에서 두 개의 유전체 서열에 대한 ANI 값을 계산하는 펄 스크립트가 있어서 이를 가져다가 활용해 보았다. 요즘은 GitHub에 정말 유용한 프로그램들이 많이 올라와서 일손을 덜게 해준다. FASTA 프로그램도 GitHub에서 다운로드할 수 있을 정도이니....

마지막으로 유전체 서열을 이용한 DDH 값의 추정치를 만들어주는 GGDC라는 서버도 있다. 요즘 내가 매우 자주 쓰는 도구이다. ANI 값으로 종을 구별할 수 있는 경계치는 95~96% 정도로 나타나서 칼로 싹둑 자르듯이 표현하기가 어렵지만, GGDC에서는 실제 DDH에 상응하는 수치가 나와서 활용하기가 매우 편리하다.

이상에서 소개한 도구들의 정확한 사용 목적을 아는 것이 중요하다. 두 개 혹은 그 이상의 미생물 유전체 서열을 제공했을때 동일 종 여부를 가려주는 것인가, 또는 하나의 유전체 서열을 던졌을때 이것이 어디에 속할 가능성이 있는지를 보여주는 서비스인가를 명확히 해야 한다. 결국 구별에서 시작애서 구별로 끝나는 글을 쓰고 있다.

댓글 없음: