User Tools

Site Tools


custom_kraken_db_test

This is an old revision of the document!


Custom kraken DB test

Kraken에서 database란 아주 구체적으로 말하자면 디렉토리 명칭이다. DB 작성을 위해 모은 염기서열 fasta file 모음은 library라 부른다.Kraken DB가 수록한 내용은 library에서 추출한 모든 k-mer에 대해서 taxonomy 정보를 연결해 놓은 것이라고 생각하면 간단하다. 만약 어떤 k-mer가 여러 genome에 공통적으로 존재한다면 어떤 taxonomy 정보를 연결할 것인가? 이 경우에는 lowest common ancestor(LCA)를 연결한다. 보다 상세한 내용은 Kraken 공식 매뉴얼을 참조하라.

설치 방법

Custom Kraken DB를 만들려면 taxonomy 정보가 포함된 서열 자료(fasta files)와 NCBI taxonomy 파일이 필요하다. 다음의 사례는 standard Kraken DB의 구축 사례이다. Standard library란, NCBI에서 제공하는 bacteria 및 virus의 유전체 서열을 이용한 것이다. 이들 파일에는 서열 ID에 gi 번호가 있어서 taxonomy와 연결되는 키 역할을 한다. 실제로 라이브러리 파일 하나를 열어보면 다음과 같다.

>gi|255767013|ref|NC_000964.3| Bacillus subtilis subsp. subtilis str. 168 chromosome, complete genome

단, 이제는 NCBI에서 bacteria 유전체 서열 전부를 압축한 all.fna.tar.gz를 더 이상 업데이트하지 않고 있으며 보관 위치도 변경되었다. 따라서 Kraken package의 download_genomic_library.sh를 다음과 같이 일부 수정해야 한다.

(수정 전) wget $FTP_SERVER/genomes/Bacteria/all.fna.tar.gz
(수정 후) wget $FTP_SERVER/genomes/archive/old_refseq/Bacteria/all.fna.tar.gz

Bacteria/all.fna.tar.gz는 5242개의 complete sequence로서 복수의 염색체가 존재하는 경우 별도의 .fna 파일로 분리된 상태이다. kraken-build –standard라고 실행을 하면 fasta file과 taxonomy 파일의 다운로드부터 이루어진다. 실제 standard kraken library를 만드는 명령어를 다음에 소개하였다. 여기에서는 kraken 프로그램이 설치된 디렉토리에서 모든 작업을 하는 것으로 가정하였고, 목표가 되는 DB의 이름은 kraken-standard이다. kraken 설치 디렉토리를 $PATH 환경변수에 선언하고 임의의 위치에서 실행해도 된다. jellyfish 1.x의 실행파일이 $PATH에 반드시 있어야 한다.

$ mkdir kraken-standard
$ PATH=/home/test/metAMOS-1.5rc3/Utilities/cpp/Linux-x86_64/jellyfish/bin:$PATH
$ cd kraken/bin
$ ./kraken-build --standard --threads 24 --db kraken-custom

작업이 끝난 DB는 다른 곳으로 복사하여 사용해도 된다. 아니면 처음부터 원하는 디렉토리를 생성하여 적절한 환경변수(예: $DBNAME)으로 선언하여 작업을 해도 좋다.

Kraken 실행 방법

$ kraken --db $DBNAME sequences.fa > sequences.kraken
$ kraken-translate --db $DBNAME sequences.kraken > sequences.labels

결과

사용한 read file

3520.notrim.pe.fq - 3119470042 bp / 30885842 seqs; 101.0 average length

Custom kraken DB를 사용한 결과

30885842 sequences (3119.47 Mbp) processed in 601.197s (3082.4 Kseq/m, 311.33 Mbp/m).
1063743 sequences classified (3.44%)
29822099 sequences unclassified (96.56%)

MiniKraken DB를 사용한 결과

30885842 sequences (3119.47 Mbp) processed in 559.800s (3310.4 Kseq/m, 334.35 Mbp/m).
501601 sequences classified (1.62%)
30384241 sequences unclassified (98.38%)

custom DB를 사용한 것이 더 나은 read coverage를 보였다. 최소한 kraken DB 자체에는 문제가 없다는 뜻이다. 그런데 왜 metAMOS test script에서는 제대로 작동을 하지 않는 것일까?

custom_kraken_db_test.1481586863.txt.gz · Last modified: 2021/03/17 13:09 (external edit)