Aurora blog

バイオインフォ・バイオテクノロジーにまつわる情報

マイクロバイオーム解析①:QIIME2を使ったメタ16S解析

QIIME2とは

マイクロバイオーム界隈のバイオインフォマティシャンが共同で開発するメタ16S解析用のツールキット((ちなみにチャイムと読む))。自分が学生の頃は旧バージョンのQIIMEしか存在していなかったように思うが、2019年頃に公開されたらしい。

基本的には、旧バージョンと同じように、コミュニティにおける解析の再現性を高めることや、新規解析手法をQIIMEのプラグインとして公開することでユーザビリティを向上させることが目的である。

QIIME1は得られる恩恵の割に、仕様を覚えるのが面倒で結局使わなかった記憶があるが、下記Nature Biotechnologyの記事によると、旧バージョンには無かった以下のような機能が追加されているらしい。メタ16S解析の最近のデータ解析手法を押さえる意味も込めて、使い方をまとめてみる。

www.nature.com

qiime2.org

解析の流れ

以下のページを参考にQIIME2で紹介されているデータ解析の流れを追う。

docs.qiime2.org

配列データの入力

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ファイルの形式については下記リンクを参照のこと。

docs.qiime2.org

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

docs.qiime2.org

系統樹作成

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

*1:GUIツールは完成版ではないらしい。

*2:QIIME artifactと呼ばれている

*3:あえてLocal alignmentを使う必要性はあるのだろうか

*4:Greengenesは数年前に管理が終わっている