2021년 11월 10일 수요일

Bactopia test - 방황의 끝(3): 공식 매뉴얼이나 도움말에서 쉽게 파악하기 힘들었던 기본 개념과 사용법 정리

Bactopia test - 방황의 끝(2) - 2021년 5월 23일 작성

이 주제와 관련하여 '방황의 끝' 혹은 '방황의 끝(1)'이란 제목을 붙인 글은 보이지 않는다. 끝나기 전까지는 끝이 난 것이 아니다! 여전히 bactopia의 공식 문서를 찾아 읽으면서 내가 뭘 잘못 이해하고 있었는지를 깨닫고 있다. 몇몇 데이터셋은 self-signed SSL certificate의 문제로 집에서 다운로드한 뒤 직장으로 가지고 나와서 복사를 하는 번거로운 과정을 거쳐야 하지만, 활용 빈도가 늘어나면서 점차 익숙해지는 중이다.

Bactopia를 설치한 뒤 가장 먼저 할 일은 데이터셋을 빌드하는 일이다. 쓰이는 명령어는 'bactopia datasets'이다. 우선 다음의 것은 species를 확정하지 않은 상태('--species STR' 파라미터를 제공하지 않음)에서 설치되는 데이터셋이다. 설치 가능한 모든 데이터셋이 궁금하면 'bactopia datasets --available_datasets' 명령어를 실행하면 된다.

  • ariba: 기본 세트는 vfdb_core와 card
  • minmer
  • amr: NCBI의 AMRFinder+ database
Species를 확정하면 prokkamlst dataset를 더 가져온다.  Prokka dataset은 유전체 주석화를 위해 미리 준비하는 단백질 서열 자료이다. RefSeq에서 complete genome('--assembly_level' 파라미터를 써서 다른 것으로 조정 가능)에 대한 GenBank 파일(max 1000; '--limit' 파라미터로 조정 가능)을 받아서 단백질 서열을 추출한 뒤 cd-hit로 클러스터링하여 이를 마련한다. '--include_genus' 파라미터를 주면 지정한 species외에도 이것이 속하는 genus의 유전체 정보를 더 가져와서 단백질 자료를 만든다. RefSeq에서 다운로드한 원본 파일을 나중에 재사용하려면 '--keep_files' 파라미터를 주어라. 아마 한번에 내려받은 GenBank flat file은 나중에 재사용을 할 일이 무척 많을 것이다. 내가 요즘 bactopia를 즐겨 사용하는 것도 바로 이 기능 때문이다. 이를 위해 뒷단에서 수고를 하는 스크립트는 바로 ncbi-genome-download이다.

이때 다운로드한 GenBank 파일은 prokka 데이터셋을 만들고 끝나는 것이 아니다. 다음의 위치에 Mash sketch DB를 만들어서 실제 유전체 해독 데이터를 이용한 후속 분석 때에 가장 가까운 reference genome을 자동으로 찾는 용도로 쓰인다. 이 reference 서열은 SNP 분석을 위해 필요하다. Reference genome을 자동으로 찾는 것이 싫다면 명령행에서 별도로 지정해도 된다.

datasets/species-specific/SPECIES/minmer/refseq-genomes.msh

datasets 디렉토리에 이미 파일이 있다면, 'bactopia datasets'은 데이터셋 다운로드를 다시 시도하지 않는다. 단, amr 데이터셋은 항상 새로 다운로드하여 설치를 하는 것이 기본 동작이다. 따라서 이것이 성가시다면 '--skip_amr' 파라미터를 주면 된다. 이미 데이터셋이 설치되어 있음에도 불구하고 새로 다운로드하여 설치하려면 '--force' 파라미터를 이용한다.

위에서 굵은 글씨로 표시한 다섯 가지의 데이터셋(ariba, minmer, amr, prokka 및 mlst) 각각에 대하여 설치 생략 혹은 강제 설치를 하려면 각각 --skip_STR 또는 --force_STR 파라미터를 지정하면 된다. STR에는 데이터셋을 나타내는 문자열을 넣어라.

다음은 노트북 컴퓨터에서 Streptococcus pneumoniae의 데이터셋을 빌드하는 과정을 보인 것이다. general dataset이 이미 설치된 상태에서 종을 지정하여 species-specific dataset을 추가로 설치하였다. 

$ bactopia datasets --species "Streptococcus pneumoniae" --include_genus --cpus 4 --keep_files
2021-11-09 21:06:11:root:INFO - Streptococcus pneumoniae verified in ENA Taxonomy database
2021-11-09 21:06:11:root:INFO - Setting up Ariba datasets
2021-11-09 21:06:11:root:INFO - vfdb_core (./datasets/ariba/vfdb_core) exists, skipping
2021-11-09 21:06:11:root:INFO - card (./datasets/ariba/card) exists, skipping
2021-11-09 21:06:11:root:INFO - Setting up pre-computed Genbank/Refseq minmer datasets
2021-11-09 21:06:11:root:INFO - ./datasets/minmer/genbank-k21.json.gz exists, skipping
2021-11-09 21:06:11:root:INFO - ./datasets/minmer/genbank-k31.json.gz exists, skipping
2021-11-09 21:06:11:root:INFO - ./datasets/minmer/genbank-k51.json.gz exists, skipping
2021-11-09 21:06:11:root:INFO - ./datasets/minmer/refseq-k21-s1000.msh exists, skipping
2021-11-09 21:06:11:root:INFO - Setting up antimicrobial resistance datasets
2021-11-09 21:06:11:root:INFO - Setting up latest AMRFinder+ database
2021-11-09 21:06:55:root:INFO - AMRFinder+ database saved to ./datasets/antimicrobial-resistance/amrfinderdb.tar.gz
2021-11-09 21:06:55:root:INFO - Setting up MLST datasets
2021-11-09 21:06:55:root:INFO - Setting up default MLST schema for Streptococcus pneumoniae
2021-11-09 21:06:55:root:INFO - Creating Ariba MLST dataset
2021-11-09 21:07:59:root:INFO - Creating BLAST MLST dataset
2021-11-09 21:08:09:root:INFO - Setting up custom Prokka proteins
2021-11-09 21:08:09:root:INFO - Setting up custom Prokka proteins for Streptococcus pneumoniae
2021-11-09 21:08:09:root:INFO - Downloading genomes (assembly level: complete)
2021-11-09 21:08:10:root:INFO - There are less available genomes than the given limit (1000), downloading all.
2021-11-09 23:15:53:root:INFO - Processing 827 Genbank files
2021-11-09 23:20:11:root:INFO - Median genome size: 2111425 (n=88)
2021-11-09 23:20:11:root:INFO - Running CD-HIT on 1516278 proteins
2021-11-09 23:29:50:root:INFO - Writing summary of available datasets

827개의 유전체 파일을 다운로드하였지만 이는 '--include_genus' 옵션에 의해 다른 종의 것까지 포함하고 있다. 실제로 이 종의 유전체 크기를 추정하는데 쓰인 것은 88개이다. 

댓글 없음: