2018년 2월 8일 목요일

Usearch 맛보기

소프트웨어 이름을 표기할 때 첫글자만 대문자로 써야 하는지(Usearch), 전체를 대문자로 써야 하는지(USEARCH)를 아직도 잘 모르겠다. 만약 소프트웨어의 이름이 acronym이라면 전부 대문자로 쓰는 것이 옳을 것이다.

어쨌든 usearchLS-BSR의 기본 클러스터링 도구이다. 다른 대안으로는 vsearch, cd-hit 등이 있다. 서열 클러스터링은 왜 하는가? 유사한 서열을 묶어서 데이터 분량을 줄이는 것이 주된 목적이다. Non-redundant sequence set을 작성하거나, 방대한 metagenome read를 처리하여 그 분량을 줄이는 것이 주된 application이다. 묶인 서열 클러스터에 대하여 하나씩의 대표 서열(representative sequence; usearch에서는 "centroid"라는 표현을 쓰는 것 같다)을 선정하거나, 혹은 consensus sequence를 만들어낼 수 있다. 아니면 클러스터에 속하는 모든 멤버 서열들을 그냥 나열하는 것도 가능하다.

그동안 상습적으로 blastclust를 써 왔는데 왠지 시대에 뒤떨어진 것 같다는 느낌이 들어서 오늘은 usearch를 살짝 사용해 보았다. 나와 비슷한 생각을 가진 사람이 또 있었는지 Biostars에 다음과 같은 글이 있다. 현재의 blast+ 패키지에는 blastclust가 빠져 있으니 그럴 생각이 들 만도 하다.
Questions: Blastclust has been deprieciated. Does anyone know why? (depreciated를 deprecated로 읽었다)
Usearch는 Robert C. Edagr 박사가 개발하였다(웹사이트; usearch home 링크). 원래 입자물리학 전공자로서 기업을 거쳐 2001년부터는 독립 과학자('independent scientist)로 일하고 있다. Usearch는 32 비트 버전의 경우 비상업적 용도로는 무료(소스 코드는 비공개), 64 비트 버전은 유료이다. 다중서열정렬 프로그램으로 유명한 muscle도 그가 개발하였다.

다음 그림은 uclust의 알고리즘을 한 눈에 잘 들어오게 보여준다. 웹사이트의 설명을 인용하자면 "A cluster is defined by one sequence, known as the centroid or representative sequence"이다. Ucluster는 단백질의 경우 identity ~50% 이상, 핵산의 경우 ~75% 이상인 서열에 적용하는 것이 바람직하다. Usearch가 제공하는 클러스터링 관련 모든 방법은 여기를 참고하라.

https://www.drive5.com/usearch/manual/uclust_algo.html

클러스터 set는 다음과 같은 기준으로 만들어진다.
  1. 모든  centeroid의 similarity는 T보다 작다.
  2. 클러스터 내 멤버 서열의 similarity는 centroid에 대하여 T와 같거나 크다.
OTU(operational taxonomic unit) clustering은 특별한 문제를 야기한다고 한다. Length sort를 하게되면 biological outlier를 centroid로 만드는 부작용이 유발되고, 종과 속을 다른 클러스터로 쪼개어서 alpha diversity를 뻥튀기하는 현상이 생긴다. 상세한 내용은 매뉴얼  페이지 혹은 2010년도 Bioinformatics에 실린 논문 "Search and clustering orders of magnitude faster than BLAST"를 참조하라.

Usearch의 기본 실행법은 다음과 같다.
usearch -cluster_fast seqs.fasta -id 0.9 -centroids nr.fasta
-cluster_fast는 command, -centroids는 output option이다. 클러스터를 구성하는 서열을 얻고 싶다면 다음과 같이 -cluster 옵션을 주어야 한다(cluster_fast에서만 작동). 그러면 cluster_dir 아래에 c_0, c_1, c_2...과 같은 서열 파일이 생긴다. 각 파일은 하나의 클러스터를 의미하며, 파일 내의 첫번째 서열이 바로 centroid가 된다.
usearch -cluster_fast seqs.fasta -id 0.9 -clusters cluster_dir/c_
그러면 vsearch(논문 링크; GitHub)는 무엇인가? 소스코드가 공개되어있지 않고 알고리즘 설명이 빈약한 usearch를 대신하고자 만든 open source tool이라고 한다.

마지막으로 CD-HIT를 빼놓을 수 없다(GitHub). 거대한 분량의 데이터를 초고속으로 다루는 cd-hit에는 다양한 핵심 프로그램과 스크립트가 포함되어 있다.

댓글 없음: