Bioinformatics/Metagenome

[Kracken2] Custom database 만들기

김해김씨99대손 2024. 11. 26. 17:05

 

1. 원하는 서열 다운로드하기 

1-1. 홈페이지에서 다운로드하기

(1) 홈페이지 접속 

https://www.ncbi.nlm.nih.gov/datasets/genome/

 

Genome

Download a genome data package including genome, transcript and protein sequence, annotation and a data report

www.ncbi.nlm.nih.gov

 

(2) 원하는 종을 검색 후 다운로드 

- 보통 fasta파일을 다운로드합니다. 

 

1-2. NCBI datasets command line사용하기 

- ref: https://www.ncbi.nlm.nih.gov/datasets/docs/v2/download-and-install/

 

(1) -1 직접 다운로드하기 

# Linux
wget https://ftp.ncbi.nlm.nih.gov/pub/datasets/command-line/v2/linux-amd64/datasets
wget https://ftp.ncbi.nlm.nih.gov/pub/datasets/command-line/v2/linux-amd64/dataformat

 

(1) -2 conda환경에서 사용하기

conda create -n ncbi_datasets
conda activate ncbi_datasets
conda install -c conda-forge ncbi-datasets-cli

 

(2) 사용하기

datasets download genome taxon "Aspergillus fumigatus" --filename /data/Reference/Kraken2/ATCC_MSA_1010_fungi/aspergillus_fumigatus.zip

 

Aspergillus fumigatus에 해당하는 모든 서열 다운로드 됨으로 type material을 추출하려면 추가 과정이 필요합니다. 

 

 

 

2. Kracken2 설치하기 

conda create -n kraken2 -c bioconda kraken2

 

kraken에서 제공하는 여러 데이터베이스가 존재합니다. 이는 archaea, bacteria, viral, human, UniVec_Core의 서열을 가지고 있습니다. 

- 다른 DB목록: https://benlangmead.github.io/aws-indexes/k2

 

Index zone by BenLangmead

MicrobialDB archaea, bacteria, viral, human, UniVec_Core, Eukaryotic pathogen genomes (EuPathDB54) with contaminants removed 8/8/2023 535 .kdb .tar.gz

benlangmead.github.io

 

$ kraken2-build --standard -db kraken2DB

 

위 코드 실행 시, 전체 DB를 다운로드하기까지 11시간이 걸렸습니다. 

 

 

3. Kracken2 DB 구축하기 

(1) 원하는 서열을 모두 하나의 fasta파일로 만들기 

다운로드한 typs strain 서열을 "cat strain1.fna strain2.fna strain3.fna > total_seq.fna" 코드를 사용해 하나로 합쳤습니다. 

 

(2) Kraken2 custom DB 구축 

# 1) 원하는 이름의 DB만들기 
kraken2-build --download-taxonomy --db custom_db
	# custom_db안에 taxonomy 폴더가 만들어지며, 데이터가 다운 (약 30분)

# 2) 원하는 서열을 custom_db에 추가한다
kraken2-build --add-to-library  merged_seq.fna --db custom_db

# 3) 추가가 완료된 데이터베이스를 kraken2 전용으로 구축한다
kraken2-build --build --db custom_db

 

저는 10개의 type strain으로 DB 구축 결과 1 단계에서 10분, 2단계에서 2초, 3단계에서 2분이 소요되었습니다. 

 

 

4. 사용하기 

Kraken의 input은 크게 Paired-end와 Single end가 있습니다.

Paired-end는 보통 Raw 데이터에서 바로 분류하는 것(read-based analysis)이고,

Single end는 assembly를 통한 Contig, Scaffold 혹은 MAG단위에서 분류할 때 사용합니다.

 

저는 계통 조성만 보고 싶음으로 read-based analysis를 수행하였습니다. 

kraken2 --db /data/Reference/Kraken2/custom_db \
  --threads 16 \
  --paired --report kraken2.out/Readbased.kraken.custom_report.txt \
  --output kraken2.out/Readbased.kraken.custom_output.txt \
	host_removal2/MockATCC_host_removed.1.fastq.gz  \
	host_removal2/MockATCC_host_removed.2.fastq.gz

 

 

결과는 성공적으로 원하는 서열을 모두 검출할 수 있었습니다.

왜 기존 Kraken standard DB에서는 이를 잡아내지 못했는지는 의문입니다만, DB의 자체적인 한계로 생각됩니다. 

 

만약 원하는 서열이 보이지 않는다면, 이와 같은 방법을 수행하시길 바랍니다~.

감사합니다. 

 

 

 

 

참고

- https://avilpage.com/2024/07/mastering-kraken2-build-custom-db.html

- https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases

반응형