2021년 5월 31일 월요일

RefSeq Masher, 편리한 것은 좋은데...

RefSeq Masher는 Mash MinHash 기법을 이용, 내가 갖고 있는 시퀀싱 데이터가 54,925개의 RefSeq Genome 중 어느 것에 해당하는지를 찾아주는 유틸리티이다. Mash를 직접 쓰는 것에 비하면 훨씬 편리하다. 문제점은 Mash sketch DB가 좀 오래되었다는 점이다. 오늘 날짜로 RefSeq에서 박테리아의 assembly summary file을 받아 보니 216,709 줄이나 된다. 첫 두 줄은 코멘트이므로 제거한다 해도 RefSeq Masher가 제공하는 기본 DB의 거의 4배가 된다. 게다가 bacteria 이외의 것은 아직 확인해 보지도 않았다. 최신 유전체 자료를 이용하여 custom Mash sketch DB를 만든다 해도 문제가 해결되지는 않는다. RefSeq Masher는 distance를 계산한 결과를 다시 'ncbi_refseq_taxonomy_summary.csv'라는 파일과 연결하여 taxonomy를 뽑아내는 것으로 끝을 맺기 때문이다. Custom DB를 만들어 봐야 taxonomy 파일까지 준비하지 않으면 소용이 없다. RefSeq Masher의 개발자들도 아직 여기까지는 신경을 쓰고 있지 않은데 내가 아쉬워하는 것이 무슨 의미가 있을까 싶다.

검색을 거듭해 보니 Mash의 공식 매뉴얼 문서(PDF)에서는 RefSeq release 88로 만든 sketch DB를 제공하고 있음을 확인하였다. 그러나 언제적 release인가! RefSeq의 가장 최근 배포판은 5월 27일, 그러니까 4일 전에 배포된 Release 206이다. 내 컴퓨터에는 miniconda 설치 위치의 다음 위치에 두 개의 파일을 제공하고 있다.

  • pkgs/refseq_masher-0.1.2-py_0/site-packages/refseq_masher/data
  • Files: RefSeqSketches.msh  ncbi_refseq_taxonomy_summary.csv

54,925개의 genome이 포함된 RefSeq은 언제적 release일까? 이것이 RefSeq 88보다 예전 것임은 명백하다. 왜냐하면 파일 사이즈가 94M와 1002M로 크게 차이가 나기 때문이다. Min-hash size도 400개에 지나지 않는다. 요즘은 1만개 기준으로 분석을 빈번히 하는 것과 비교한다면 한참 시대에 뒤떨어진 것이 아닌가하는 생각이 든다.

$ mash info RefSeqSketches.msh | more
Header:
  Hash function (seed):          MurmurHash3_x64_128 (42)
  K-mer size:                    16 (32-bit hashes)
  Alphabet:                      ACGT (canonical)
  Target min-hashes per sketch:  400
  Sketches:                      54925

2년 정도 주기로 누군가에 의해 RefSeq Mash sketch DB가 만들어져서 세상에 공개된다면 참 좋을 것이다. KRAKEN2처럼 말이다. 안타깝게도 custom DB를 만드는 방법은 매뉴얼에서 확인하기 어렵다. Minikraken2의 2019년 4월 업데이트는 메모리에 올라가는 용량(8G)에 대해서만 강조하고 있을 뿐, 몇 건의 genome sequence로부터 만들어진 것에 대해서는 자세히 적어 놓지를 않았다. 

Mash의 예전 문서에서 Building a custom RefSeq database라는 섹션을 찾기는 했지만 이대로 따라서 할만 한 일인지 확신이 서지 않는다... Mash 1.0 documentation에는 존재하다가 지금은 사라진 이유가 있을 것이다. 

2021년 9월 6일 업데이트

캐나다에서 개발하여 배포하는 갤럭시 기반의 IRIDA(Integrated Rapid Infectious Disease Analysis)에 RefSeq masher가 포함되어 있음을 확인하였다(관련 문서 링크).

댓글 없음: