2017년 9월 22일 금요일

Docker를 통해 배우는 Galaxy와 Plasmid Profiler

Galaxy는 웹 기반의 오픈소스형 생명정보 분석용 플랫폼이다. 2009년에 미국 Cold Spring Harbor Laboratory에서 열린 Genome Informatics Meeting에 참석했다가 이를 처음으로 접하고 참 흥미로운 소프트웨어라고 생각을 했었다. 그 이후로 발전에 발전을 거듭하여 대용량의 NGS data를 다루는 사람이라면 누구나 손쉽게 접근할 수 있는 서비스가 되었다. 다양한 생명정보학 분석 도구가 이미 내장되어 있는데다가 Tool Shed를 이용하여 사용자가 구동하기를 원하는 개별적인 프로그램을 적재할 수 있고 워크플로우 구성도 가능하다.

내가 주로 다루는 미생물 유전체 시퀀싱 데이터는 리눅스 기반의 몇 가지 공개 소프트웨어와 CLC Genomics Workbench(Genome Finishing Module 및 Microbial Genomics Module)에서 충분히 소화가 가능했기에 갤럭시에는 별로 관심을 갖기 않았었다. 그런데 최근 감염균의 whole genome sequencing data에 포함된 플라스미드 서열을 조립하지 않고 incompatibility group으로 구분하고 항생물질 내성 유전자 프로필을 구성하는 소프트웨어인 Plasmid Profiler를 테스트하면서 갤럭시를 쓰지 않을 수 없었다. 갤럭시를 로컬 시스템에 설치하는 것은 꽤 부담이 되는 일이다. 그러나 갤럭시와 그 내부에서 워크플로우 형태로 실행 가능한 Plasmid Profiler를 Docker 이미지로 제공하여 정말 쉽게 체험을 할 수 있도록 만들어 놓았다. 개발자가 제공한 샘플 데이터와 내 데이터를 사용하여 그저께부터 벌써 몇번째 실행을 하고 있는지 모른다. Docker라는 도구의 편의성도 놀랍지만 갤럭시도 의외로 사용법이 쉬웠다.

Docker란 도대체 무엇인가? 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 호스트 OS 위에 게스트 OS가 올라가는 VirtualBox 같은 무거운 방식은 잊어버리자. 도커에 대해서 아무 아이디어가 없는 사람은 다음의 웹문서 삼종세트를 읽어보기 바란다.

  1. 초보를 위한 도커 안내서 - 도커란 무엇인가?
  2. 초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기
  3. 초보를 위한 도커 안내서 - 이미지 만들고 배포하기
갤럭시 도커 이미지PlasmidProfiler-Galaxy 도커 이미지는 각각의 링크를 참조하기 바란다. Plasmid Profiler를 실행하는 것은 너무나 쉽다. 도커를 먼저 설치한 뒤, 다음과 같이 입력하면 그만이다. 첫 실행에서 이미지 파일을 내려받아서 실행을 하게 된다. 실행 중이 도커의 인스턴스를 '컨테이너'라 한다(내가 용어를 정확하게 이해하고 있는지는 아직 자신이 없다). 다운로드한 이미지는 시스템 어딘가에 저장이 되므로 다음번 docker run에서는 좀더 빨리 실행이 된다.
docker run -t -p 48888:80 phacnml/plasmidprofiler_0_1_6  
그러면 웹 브라우저에서 48888 포트를 열면 된다. 다음은 최종 결과물의 스크린샷이다.


내가 실제로 사용한 명령어는 다음과 같다. 이렇게 하면 Plasmid Finder의 결과 파일들이 로컬 파일시스템(/data/apps/galaxy_storage/)에 그대로 저장이 된다. 이를 일부러 지우지 않으면 도커를 중단하고 다음에 다시 실행하여도 보존된 파일을 갤럭시 히스토리 내에서 볼 수 있다. /export는 도커 컨테이너 내에서의 경로이다.
docker run -t -p 48888:80 -v /data/apps/galaxy_storage/:/export/ phacnml/plasmidprofiler_0_1_6

Plasmid Profiler의 작동 설명

플라스미드는 모자이크 구조를 하는 경우가 많고 반복 서열과 mobile element의 함량이 많아서 whole genome sequencing 결과물에서 염색체 서열과 구별하기가 매우 어렵다. PLACENET이나 plasmidSPAdes와 같이 plasmid의 서열만을 추출하려는 프로그램도 존재하지만 그렇게 만족스런 수준은 아니다. Plasmid Profiler는 아예 de novo assembly를 배제하고서 시퀀싱 샘플에 포함된 플라스미드의 유형과 내성 유전자 콘텐츠를 비교하는 것을 목표로 한다.

입력물은 (1) NGS short read data, (2) 플라스미드 서열 데이터, 그리고 (3) replicon sequence + 관심대상 유전자 서열(주로 항생제 내성 유전자)의 세 가지이다. (2)와 (3)은 도커 이미지에 내장된 상태이지만 항생제 내성 유전자는 사용자가 용도에 맞게 추가해야 한다. 기본적으로 포함된 파일에는 5개의 carbapenemase 유전자만 들어있다. (2)번의 플라스미드 서열 데이터(pp_plasmid_database.fasta)는 NCBI에서 다운로드한 Gammaproteobacteria의 플라스미드 서열 2797개를 완성도와 유사도 측면에서 추려서 대표적인 서열만 모은 것이다. (3)번 데이터(plasmidfinder_plusAMR.fasta)는 덴마크 Center for Genomic Epidemiology에서 배포하는 PlasmidFinder DB에서 유래한 replicon sequence 파일에 항생제 내성 유전자 서열을 덧붙인 것이다. 여기서 말하는 replicon이란 흔히 쓰이는 개념인 '자가복제 가능한 서열'이 아니라, 플라스미드의 incompatibility group을 나누는데 기준이 될 수 있는 염기서열이다.

Plasmid Finder의 첫번째 단계에서는 KAT를 사용하여 Gammaproteobacteria의 플라스미드 서열에 해당하는 것(k-mer 기반)만을 선별한다. 그 다음에는 read를 SRST2로 처리하여 curated plasmid sequence, 즉 (1)번 데이터에서 hit를 모은다. 여기서 조금 혼동스러운 것은 이 과정의 결과로서 얻어지는 것이 input read의 모임이 아니라 plasmid database의 hit되는 영역이라는 것이다(이것은 착각이었다. 9월 27일자 추가 사항을 참고). 다음 단계로 넘어가는 서열(history panel에서 "Fasta Extract Sequence on collection ###..."로 표시)의 ID가 다음과 같다는 점에서 확인 가능하다. input read를 조립하지 않고 단지 매핑만 하므로, reference plasmid DB에서 매핑된 영역을 추출하여 다음 단계로 넘기는 것으로 판단된다. 
>550__KU665642.1__KU665642.1__00132 no
>510__KF874498.1__KF874498.1__00168 no
>514__KU295133.1__KU295133.1__00182 no
>686__KJ146688.1__KJ146688.1__00190 no ...

2017년 9월 27일 그리고 이후에 추가한 사항

그게 아니었다. SRST2에서 확인된 plasmid DB의 hit sequence를 그대로 가져오는 것이었다. 이것은 서열 ID와 길이를 서로 맞추어 봄으로써 확인한 것이다. Plasmid Profiler flowchart의 step 3에도 나와있듯이 여기에서 하는 일은 "Identify plasmid hits per isolate from individualized databases (SRST2)"인 것이다.  //추가 사항은 여기까지이다.

다음 과정을 살펴보자. 바로 이전 단계에서 얻어진 서열을 BLAST DB로 전환한 뒤 (3)번 서열을 query로 하여 MegaBLAST를 실시한다. 그러면 어떤 내성 유전자가 있는지, 플라스미드는 어떻게 그룹을 지어야 하는지를 알 수 있다. 마지막 단계에서는 R package를 돌려서 dendrogram이 포함된 heatmap으로서 결과를 작성한다.

아직 결과물이 100% 마음에 드는 것은 아니다. 특히 샘플이 가진 모든 내성 유전자 목록을 보여주지 못한다는 것이 가장 큰 한계점으로 여겨진다. Hit된 reference plasmid가 갖는 best hit AMR(antimicrobial resistance) gene만 보여지게 만들었기 때문이다. 현 단계에서 Plasmid Profiler 논문은 bioRxiv에만 공개된 상태이니 만약 전문 학술지에 정식으로 게재가 되면 성능 개선이 이루어질지도 모르는 일이다.

댓글 없음: