Kraken2は、シーケンスデータ(メタゲノムデータなど)を高速に分類するためのツールです。k-mer(短い塩基配列の断片)を利用して、各リードがどの生物種に由来する可能性が高いかを判定します。
ここでは、Kraken2の基本的な使い方について説明します。
1. Kraken2のインストール
Kraken2は、Conda(MinicondaやAnaconda)を使って簡単にインストールできます。
conda create -n kraken2 kraken2
conda activate kraken2
また、GitHubからソースコードをクローンしてコンパイルすることも可能です。
git clone https://github.com/DerrickWood/kraken2.git
cd kraken2
./install_kraken2.sh <インストール先のディレクトリ>
2. データベースの準備
Kraken2を使用するには、分類の基準となるデータベースが必要です。Kraken2のチームが提供している標準データベースを利用するか、自分でカスタムデータベースを構築することができます。
標準データベースのダウンロード
よく使われるのは、NCBIのRefSeqデータベースに基づいたものです。kraken2-buildコマンドを使用してダウンロードと構築を行います。
まず、ライブラリをダウンロードします。
kraken2-build --download-taxonomy --db <データベース名>
kraken2-build --download-library bacteria --db <データベース名> --threads <スレッド数>
kraken2-build --download-library archaea --db <データベース名> --threads <スレッド数>
kraken2-build --download-library viral --db <データベース名> --threads <スレッド数>
# 必要に応じて他のライブラリも追加 (human, fungi, plantなど)
次に、データベースを構築します。
kraken2-build --build --db <データベース名> --threads <スレッド数>
データベースのサイズは非常に大きくなることがあるため、十分なディスク容量とメモリを確保してください。 --threads オプションで並列処理数を指定すると、処理時間を短縮できます。
カスタムデータベースの構築
特定のゲノム配列セットを使ってカスタムデータベースを構築することも可能です。FASTA形式のファイルを用意し、
kraken2-build --add-to-library コマンドでライブラリに追加した後、同様に --build でデータベースを構築します。
# FASTAファイル (genome1.fa, genome2.faなど) を用意
kraken2-build --add-to-library genome1.fa --db <カスタムデータベース名>
kraken2-build --add-to-library genome2.fa --db <カスタムデータベース名>
# ... 必要なファイルをすべて追加 ...
kraken2-build --build --db <カスタムデータベース名> --threads <スレッド数>
3. Kraken2の実行(シーケンスの分類)
データベースの準備ができたら、実際にシーケンスファイルを分類します。入力ファイルはFASTQ形式やFASTA形式に対応しています。
基本的なコマンドは以下の通りです。
kraken2 --db <データベース名> --threads <スレッド数> --output <出力ファイル名> --report <レポートファイル名> <入力ファイル1> [<入力ファイル2> ...]
主なオプション:
--db <データベース名>: 使用するデータベースのパスを指定します。
--threads <スレッド数>: 使用するスレッド数を指定します。
--output <出力ファイル名>: 各リードの分類結果を出力するファイル名を指定します。
--report <レポートファイル名>: 分類結果のサマリーレポートを出力するファイル名を指定します。
--paired: ペアエンドリードの場合に指定します。入力ファイルは2つ指定します (例: reads_1.fastq reads_2.fastq)。
--gzip-compressed: 入力ファイルがgzip圧縮されている場合に指定します。
--confidence <値>: 分類結果の信頼度スコアの閾値を設定します (0から1の間の数値)。この値が高いほど、より確実な分類結果のみが出力されます。
--use-names: 出力ファイルにNCBIの分類名を含めます。
実行例 (シングルエンドリード):
kraken2 --db standard_db --threads 8 --output results.kraken --report report.txt reads.fastq
実行例 (ペアエンドリード、gzip圧縮):
kraken2 --db standard_db --threads 8 --paired --gzip-compressed --output results.kraken --report report.txt reads_1.fastq.gz reads_2.fastq.gz
4. 結果の解釈
Kraken2は主に2種類の出力ファイルを生成します。
出力ファイル (--output で指定したファイル):
各リードがどの分類群(taxonomic ID)に割り当てられたかを示します。1行が1リードに対応し、タブ区切りで以下の情報が含まれます(デフォルトの場合)。
C (Classified) または U (Unclassified)
リード名
分類群のNCBI taxonomic ID (Unclassifiedの場合は0)
シーケンス長
各k-merがどの分類群にヒットしたかを示す情報
レポートファイル (--report で指定したファイル):
分類結果のサマリーです。各分類階級(ドメイン、界、門、綱、目、科、属、種など)ごとに、その分類群に割り当てられたリードの数や割合などが表示されます。このレポートは、サンプル全体の微生物組成を把握するのに役立ちます。
5. 関連ツール
KrakenTools:
Kraken2のレポートファイルを視覚化したり、他の形式に変換したりするためのユーティリティツール群です。例えば、kreport2krona.py を使うと、Kronaでインタラクティブに結果を可視化するためのファイルを作成できます。
Bracken (Bayesian Reestimation of Abundance with Kraken):
Kraken2の分類結果をもとに、より正確な生物種の存在量(アバンダンス)を推定するためのツールです。Kraken2はリードを最も詳細な共通祖先(LCA)レベルで分類することがありますが、Brackenはこれらの情報を利用して種レベルでの存在量を再推定します。
Brackenを使用するには、まずBracken用のデータベースファイルを構築する必要があります。
bracken-build -d <Kraken2データベース名> -t <スレッド数> -k <k-mer長> -l <リード長>
そして、Kraken2のレポートファイルを入力としてBrackenを実行します。
bracken -d <Kraken2データベース名> -i <Kraken2レポートファイル名> -o <Bracken出力ファイル名> -r <リード長> -l <分類レベル (S:種, G:属など)>
注意点
メモリ使用量: Kraken2のデータベースは非常に大きくなる可能性があるため、十分なRAMが必要です。特に大規模なデータベース(全RefSeqなど)を使用する場合は、数百GBのRAMが必要になることもあります。
データベースの選択: 解析の目的に応じて適切なデータベースを選択することが重要です。特定の生物群に興味がある場合は、その生物群に特化したカスタムデータベースを構築することも検討しましょう。
k-mer長と精度: k-mer長はデータベース構築時に設定されます。k-mer長が長いほど特異性は上がりますが、感度が下がる可能性があります。Kraken2のデフォルトは35bpです。
偽陽性: 特に近縁種が多い場合や、データベースに含まれていない生物種が存在する場合、誤った分類(偽陽性)が起こる可能性があります。--confidence オプションで閾値を調整することで、ある程度コントロールできます。
より詳細な情報や高度な使い方については、Kraken2の公式GitHubリポジトリやドキュメントを参照してください。
Kraken2 GitHub: https://github.com/DerrickWood/kraken2
Kraken2 Manual: https://ccb.jhu.edu/software/kraken2/index.shtml?t=manual
この情報が、Kraken2を使い始める上で役立つことを願っています。