QIIME2とは
マイクロバイオーム界隈のバイオインフォマティシャンが共同で開発するメタ16S解析用のツールキット((ちなみにチャイム
と読む))。自分が学生の頃は旧バージョンのQIIMEしか存在していなかったように思うが、2019年頃に公開されたらしい。
基本的には、旧バージョンと同じように、コミュニティにおける解析の再現性を高めることや、新規解析手法をQIIMEのプラグインとして公開することでユーザビリティを向上させることが目的である。
QIIME1は得られる恩恵の割に、仕様を覚えるのが面倒で結局使わなかった記憶があるが、下記Nature Biotechnologyの記事によると、旧バージョンには無かった以下のような機能が追加されているらしい。メタ16S解析の最近のデータ解析手法を押さえる意味も込めて、使い方をまとめてみる。
- Python API / GUIツール
従来通りコマンドラインでの利用に加えて、PythonモジュールやGUIツールでの利用が可能*1 - インタラクティブな可視化
QIIME2で作成したファイルをQIIME 2 Viewで開くとこのページのようにインタラクティブにデータを眺めることができる。 - 時系列データ解析
例: https://docs.qiime2.org/2021.2/tutorials/longitudinal/ - メタボロームやショットガンメタゲノムデータの解析手法も一部プラグインとして実装
- 解析をトレース可能
QIIME2のファイル (.qza) どのファイルから、どのコマンドで生成されたか、といった履歴情報が保存されている。CWL用のWrapperも開発中らしい。
解析の流れ
以下のページを参考にQIIME2で紹介されているデータ解析の流れを追う。
配列データの入力
FastqファイルをQIIME用のフォーマット (.qza) *2 として読み込む。配列データの形式によって若干オプションが変わるが、基本的にはManifestファイルを使った処理をすれば、どのようなファイルに対しても対応可能と思われる。
--input-format
オプションは、Paired-endの場合はPairedEndFastqManifestPhred33V2
、Single-endの場合はSingleEndFastqManifestPhred33V2
とする。最近はほぼ無いと思うがPhred64の場合は*Phred64V2
とする。
qiime tools import \ --type 'SampleData[PairedEndSequencesWithQuality]' \ --input-path ${manifest} \ --output-path ${prefix}.qza \ --input-format PairedEndFastqManifestPhred33V2
Manifestファイルの形式については下記リンクを参照のこと。
Denoising / OTU clustering
OTUクラスタリングとは、類似した配列をOTU (Operational taxonomic unit) と呼ばれるクラスタに分類する操作のことである。慣習として類似性97%が閾値として使われることが多い。この場合、97%以上の互いに一致する配列は一つのOTUへとまとめられる。
# Quality filtering qiime quality-filter q-score \ --i-demux ${prefix}.qza \ --o-filtered-sequences ${prefix}.qc.qza \ --o-filter-stats ${prefix}.qc_stats.qza # Dereprecation qiime vsearch dereplicate-sequences \ --i-sequences ${prefix}.qc.qza \ --o-dereplicated-table ${prefix}.qc.derep_table.qza \ --o-dereplicated-sequences ${prefix}.qc.derep.qza # De novo OTU clustering qiime vsearch cluster-features-de-novo \ --i-table ${prefix}.qc.derep_table.qza \ --i-sequences ${prefix}.qc.derep.qza \ --p-perc-identity 0.97 \ --o-clustered-table ${prefix}.otu_97_table.qza \ --o-clustered-sequences ${prefix}.otu_97.qza
OTUクラスタリングでは、複数の種に由来する配列が一つのOTUとして誤って分類されることがある。そこで最近では、ユニークな配列 (ASV: Amplicon sequence variant) 単位で解析する、DADA2やDeblurなどの手法が提案されている (これらの手法はシーケンスエラーを考慮してユニークな配列を同定する)。 これらの手法にはメリットしかないような気がするが、いまだにOTUベースで解析している論文も多く見る状況。DADA2は低クオリティ配列の前処理を必要としない。以下のコマンドで実行可能。
qiime dada2 denoise-paired \ --i-demultiplexed-seqs ${prefix}.qza \ --o-table ${prefix}.asv_table.qza \ --o-representative-sequences ${prefix}.asv.qza \ --o-denoising-stats ${prefix}.asv_stats.qza
生物種推定
上記の手法で同定されたASV/OTUの生物種を推定する。QIIMEではBLAST(Local alignment)*3、VSEARCH(Global alignment)、scikit-learn(Naive Bayes classifier)での生物種推定手法を提供している。
学習済みNaive Bayesモデルや、BLAST/VSEARCHに利用可能な参照配列データは以下のリンクでダウンロード可能。SILVAとGreengenes*4のそれぞれで参照データが用意されている。
# BLAST qiime feature-classifier classify-consensus-blast \ --i-query ${prefix}.asv.qza \ --i-reference-reads SILVA.qza \ --i-reference-taxonomy SILVA.taxonomy.qza \ --o-classification ${prefix}.asv.blast_SILVA.qza # VSEARCH qiime feature-classifier classify-consensus-vsearch \ --i-query ${prefix}.asv.qza \ --i-reference-reads SILVA.qza \ --i-reference-taxonomy SILVA.taxonomy.qza \ --o-classification ${prefix}.asv.vsearch_SILVA.qza # scikit-learn qiime feature-classifier classify-sklearn \ --i-reads ${prefix}.asv.qza \ --i-classifier SILVA_sklearn.qza \ --o-classification ${prefix}.asv.sklearn_SILVA.qza
系統樹作成
ASV/OTUの配列を使って系統樹を作成する。系統樹はUniFrac距離などの細菌叢のβ多様性を計算する際に使う。系統樹作成には、(i)MAFFT/Clustal等のツールによるマルチプルアラインメントと(ii)Fasttree等のツールによる系統樹推定の2ステップがあるが、QIIME2では一つのコマンドで実行することが可能。
qiime phylogeny align-to-tree-mafft-fasttree \ --i-sequences ${prefix}.asv.qza --o-alignment ${prefix}.asv.mafft.qza \ --o-masked-alignment ${prefix}.asv.mafft_masked.qza \ --o-tree ${prefix}.asv.fasttree.qza \ --o-rooted-tree ${prefix}.asv.fasttree_rooted.qza
フォーマット変換
QIIME特有のqzaフォーマットを他のツールで利用可能なフォーマットへ変換する。細菌種組成などのテーブルデータはBiom、系統樹データはNewick、配列ファイルはFastaへ変換される。
qiime tools export \ --input-path feature-table.qza \ --output-path exported-feature-table