2022년 2월 10일 목요일

박테리아 유전체 조립 및 분석용 파이프라인, Nullarbor와 ZGA

나는 아직도 논문을 종이에 인쇄하여 줄을 쳐 가면서 읽는 것을 좋아한다. 모니터 화면이나 태블릿 PC에 PDF 파일을 띄워 놓고 읽는 것이 더 편하다는 사람도 있고, 나 역시 앞으로는 종이 인쇄물보다 컴퓨터 화면을 이용하는 일도 점점 더 많아질 것이다. Mendeley에는 어디서든 볼 수 있도록 클라우드 서버에 동기화한 PDF 파일이 수북하게 존재한다지만, 최근에 읽고 중요하다고 생각한 논문을 다시 찾으려면 결국 인쇄하여 놓은 논문 더미를 뒤지는 것이 더 빠르다. 

박테리아 유래의 raw sequencing 자료를 조립하고 기본적인 분석을 실시하는 공개 소프트웨어로서 TORMES를 즐겨 사용하는 편이다. 단, 명령어를 날리기 위해 메타데이터 파일을 만드는 일이 조금 귀찮고, 서로 관련성이 없는 미생물 자료를 한번에 처리하는 것은 넌센스이다(왜냐하면 pan genome analysis를 기본으로 수행하므로). KRAKEN DB 때문에 설치 용량도 조금은 큰 편이다. 이보다 더 심플하고 가벼운 파이프라인이 없는지 최근 자료를 뒤져보니 바이오아카이브에 ZGA라는 소프트웨어가 소개된 것을 발견하게 되었다(논문, GitHub). 논문의 제목은 "ZGA: a flexible pipeline for read processing, de novo assembly and annotation of prokaryotic genomes"이다. 제목에 잘 나타나 있듯이 딱 유전체 주석화까지만 해 준다. pan genome analysis, core/accessory gene-base tree buidling, MLST, VF/AMR prediction 등은 다루지 않는 가벼운 파이프라인이다. 

개발자인 러시아의 Korzhenkov는 많은 미생물 유전체 조립 파이프라인이 명멸하였으나 현재까지도 계속 업데이트가 지속되는 것은 TORMES와 nullarbor뿐이라고 하였다. 2015~2016년 무렵에 A5-miseq이라는 일루미나 전용의 조립 파이프라인을 썼던 기억이 난다. 현재 인용 횟수는 814회. Nullarbor가 뭘까? 이 블로그에서 여러 차례 소개했던 호주의 과학자 Torsten Seemann의 작품이었다(GitHub). 

Nullarbor는 원래 호주 남부의 평원 지대를 뜻한다. arbor(나무)가 없어서(null) 이런 이름이 만들어진 것인지? 호주 관광청에서 소개한 눌라보 평원 관련 기사를 보라. 자동차로 여기를 여행하는데 무려 6일이 걸린다고 한다. 오늘 검색을 해 보기 전까지는 이 단어가 무엇을 뜻하는지 전혀 알지 못했다. 스테이크 전문점으로만 알고 있었던 아웃백(Outback)이라는 낱말도 '호주의 건조한 내륙부에 사막을 중심으로 뻗어있는 넓고 인구가 희박한 지역'이라고 하니, 호주의 독특한 자연환경을 가리키는 말들이 이것 말도고 더 있지 않을까?

Nullarbor라는 영단어에 대한 나의 추론은 정확하였다. Torsten Seemann의 설명을 인용하자면 다음과 같다.
The Nullarbor is a huge treeless plain that spans the area between south-west and south-east Australia. It comes from the Latin "nullus" (no) and "arbor" (tree), or "no trees". As this software will generate a tree, there is an element of Australian irony in the name.
ZGA의 장점은 일반적인 소비자용 PC(modern consumer PC)를 초과하는 시스템을 요구하지 않는다는 것, 그리고 long read를 다룰 수 있다는 점이다. 항생제 내성 유전자를 검색하는 기능은 없다. 유전자 주석화에는 역시 Seemann의 유명한 작품인 Prokka를 쓰는 것이 아니라 일본에서 개발한 DFAST(DDBJ Fast Annotation and Submission Tool)을 사용한다. 인용횟수가 8천회 가까이 되는 대중적인 Prokka를 택하지 않은 것은 이 응용 프로그램이 Perl을 기반으로 하기 때문이란다. Perl은 이제 버전 7을 향해 바뀌고 있어서(이것도 오늘 처음 알았음!) 앞으로 의존성 문제가 생길 수 있기에 아예 DFAST를 쓴 것이라 한다. BBTools를 적극적으로 사용하는 것도 바람직하다고 본다. Read 전처리를 위한 도구 역시 trimmomatic에서 fastp로 대체되었다.

다소 성가신 계산 작업을 하려고 머리를 쥐어뜯고 있다가 문득 BBTools 패키지에 이미 그러한 기능을 수행하는 스크립트가 들어 있음을 알게 되었을 때, 잠시 작업을 멈춘 다음 비로소 고개를 숙이고 숙연한 마음을 갖게 된다. MetaBAT 2를 이용하는 Best Binning Practices를 공부하다가 알게 된 jgi_summarize_bam_contig_depths 스크립트는 BBTools에 포함되어 있다.

오늘 제목으로 삼은 소프트웨어는 전부 bacterial isolate genome의 조립과 분석을 위한 것이다. 그러나 요즘 푹 빠져 있는 주제는 shotgun 방식의 metagenome assembly이다. 특히 Nanopore sequencing 자료 단독으로 어떻게 하면 좋은 분석물을 만들게 될지 눈이 빠지게 조사를 하고 있다. 일단 조립 측면에서는 metaFlye와 medaka가 무난하지만, circlator fixstart를 돌려 보면 여전히 dnaA gene은 시퀀싱 에러에 의해서 두세개로 조각이 난 상태이다. 결국은 일루미나로 추가 시퀀싱을 한 뒤 pilon을 돌려야 하는 것인지...

앗, 잠시 착각을 했었다. medaka 교정 전의 assembly를 가지고 fixstart를 하고 있었다. 교종 후의 것으로 circlator fixstart를 했더니 완벽하게 dnaA gene을 기준으로 시작 위치가 조정되었다.

Assembling microbial genomes from complex metagenomic samples using long nanopore reads. 원본 링크

ZGA 설치 후 테스트하기

Python 3.7을 써야 모든 dependency를 conda 환경에서 에러 없이 설치할 수 있다고 한다. 나는 다음의 명령을 이용하여 zga environment를 설치하였다.

$ conda create -n zga zga python=3.7

123설치 후 /opt/miniconda3/env/zga의 용량을 확인해 보니 3.1 GB 정도가 된다. TORMES는 8 GB의 Kraken DB를 설치해야 하고, nullarbor는 여기에 Centriguge DB(이것도 역시 8 GB)를 더해야 한다. 결과 리포트는 nullarbor가 더 '프로페셔널'해 보인다(샘플). ZGA는 가장 심플하고, TORMES는 그 중간 정도?

ZGA는 read quality check로부터 genome annotation에 이르는 6가지 과정 중 시작과 끝을 임의로 지정할 수 있어서 매우 편리하다. 예를 들어 이미 조립을 해 놓은 유전체 염기서열을 투입하여 CheckM에 의한 quality assessment가 가능하다.

오늘은 nullarbor까지 설치해 놓고서 세 가지 프로그램을 서로 비교해 가면서 용도에 맞추어 쓰는 연습을 해야 되겠다.

댓글 없음: