2018년 2월 23일 금요일

감동의 iTOL(Interactive Tree Of Life)

iTOL(http://itol.embl.de/)은 계통수를 시각화, 주석화 및 관리하는 도구이다. 웹 인터페이스로 구성되어 있어서 누구나 tree file을 올린 다음 다채로운 annotation을 할 수 있다. 계통수 곁에 배열할 데이터가 많거나 복잡하다면 데이터셋 파일을 올리면 된다. 탐색기에 있는 텍스트 파일을 마우스로 웹브라우저에 끌어다 넣으면 그만이다. 다중서열정렬부터 phylogenetic inference를 거쳐서 최종적으로 트리 작성까지를 GUI 환경에서 손쉽게 마칠 수 있는 도구로는 MEGA가 대표적이다. 하지만 내가 알기로는 트리 옆에 heatmap을 배열하는 등의 복잡한 시각화는 하기가 어렵다.

극지연구소에 근무하는 K모 박사의 말에 의하면 전문가들은 MEGA를 좋아하지 않는다고 했다. Phylogenetic analysis에 대한 깊은 지식 없이 의미도 모르는 트리를 무작정 그리게 만든다는 비평을 했던 것 같다. 다르게 표현한다면 이 분야에 대한 공부를 하려는 동기를 갖지 못하게 하는 간편한 도구라고나 할까? 그게 옳다고 해도 사전 지식이 너무나 부족한 초보자에게는 일단 어떻게 해서든 계통수를 자기 손으로 만들어 낼 수 있게 한다는 측면에서 충분히 의미가 있는 소프트웨어라고 생각한다.

난 아주 가끔 MEGA를 사용하지만 사용 빈도가 높지 않아서 그런지 사용자 인터페이스가 좀처럼 익숙하게 다가오지 않는다. 세션의 개념도 아직까지 잘 잡히지 않는다. 오히려 서열정렬은 별도로 실행한 뒤 FastTree나 요즘 익히기 시작한 RAxML에서 tree file을 만든 뒤 다른 도구에서 tree visualization을 하는 것이 더욱 편하다. 이렇게 하면서 Newick format 파일에 좀 더 익숙해졌고, 완전한 tree맹(盲)을 벗어나는데 오히려 도움이 된 것 같다.

트리를 그림으로 표현하는 도구로는 FigTree를 주로 사용하였고, Archaeopterix(실행파일은 forester.jar)를 좀 알아보려다가 이제는 iTOL로 완전히 정착하는 과정에 있다. 내가 iTOL을 본격적으로 쓰게 된 것은 다음의 글 때문이다. 능력이 된다면 python이나 R code를 직접 짜서 그려도 되겠지만 iTOL은 별로 어렵지 않게 publication quality의 그림을 만들게 해 준다.

Displaying data associated with phylogenetic trees [멜버른 대학의 Kat Holt가 2012년 작성]

계정을 생성하면 데이터를 보관하고 다른 사용자와 공유할 수도 있다. 그러나 계정을 만들지 않아도 트리를 그리는 데에는 문제가 없다. 단지 서버측에 저장이 되지 않을 뿐이다. 최근에 그린 그림(최종본이 아님)을 살짝 엿보자. 왼쪽의 그림은 Roray가 만든 core genome alignment를 FastTree에 투입하여 얻은 것이고, 오른쪽의 heatmap(정확히는 2 개)는 average nucleotide identity(pyani)와 LS-BSR의 결과물을 R로 처리한 것이다. 아래에서 보인 그림은 root의 위치를 다시 잡아야 하는데, 너무나 당연하지만 reroot를 하면 오른쪽에 보인 데이터도 이에 맞추어서 바뀐다. Tree annotation에 쓰이는 보조 자료를 dataset이라고 한다. 이 그림에서는 ANI와 LS-BSR에서 생성한 heatmap 자료가 두 건의 dataset에 해당한다. Dataset에는 binary, simple or multi-value bar chart, pie chart, text label, colored strip, colored gradient, connection, heatmap, boxplot, protein domain 등 다양한 유형이 있으며, help page에서 제공하는 템플릿 파일을 적용하여 만들면 된다.

웹사이트에는 동영상을 곁들인 사용 설명서가 있어서 익숙해지는데 큰 어려움은 없다. 한가지 힌트를 준다면 Node ID와 label을 별도로 관리하는 것이 좋다. Tree file에 수록된 node ID에 밑줄이 있다면 이는 공백으로 표현되는데, 이렇게 되면 추가할 데이터셋과 연결하기가 나쁘다. 따라서 tree 작성까지는 각자 심플한 문자열을 써서 node ID를 삼되, 나중에 실제로 표현할 label을 다음과 같이 텍스트 파일로 수록해 둔 마우스로 끌어다 놓으면 된다. 다음의 사례에서는 NCBI taxonomy ID를 node ID롤 사용하였다.
167,Escherichia coli
1423,Bacillus subtilis
...
특정 범위(아마도 clade라고 적는 것이 더 적합할 것이다)에 속하는 모든 node에 색을 입히려면 colored range라는 개념을 이해하는 것이 중요하다. 두 node를 같은 range에 포함시키면 아마도 last common ancestor에 속하는 것을 같은 색으로 입히는 것 같은데 아직 확인해 보지는 않았다. 개별 노드 단위로 색을 입히려면 colored strip 유형을 쓰면 된다.

댓글 없음: