自前で持ってる16Sとか18SとかITSのデータベースとqiime2を使ってコミュニティ解析をしたい場合に、データベースからqiime2で使える単純ベイズ分類器のモデルを作成する流れをメモしたものです。
公式のこ↑こ↓(https://docs.qiime2.org/2018.4/tutorials/feature-classifier/ ) を参考にしています。
最終的に単純ベイズ分類器のモデルを作成するので、精度のよい分類器を作成するためにはノイズを取り除いたりすることが必要になると思います。
とりあえずデータベースをqiime2のフォーマットにする
配列データと系統情報を記したタブ区切りテキストファイルをqiime2フォーマットにします。
qiime tools import \
--type 'FeatureData[Sequence]' \
--input-path database-seqs.fasta \
--output-path database-seqs.qza
qiime tools import \
--type 'FeatureData[Taxonomy]' \
--source-format HeaderlessTSVTaxonomyFormat \
--input-path taxonomy.txt \
--output-path ref-taxonomy.qza
データベース配列のノイズ除去
データベース配列にプライマーが含まれていたり、長さが揃っていない場合は下のコマンドなどで除去します。
qiime feature-classifier extract-reads \
--i-sequences database-seqs.qza \
--p-f-primer XXXXXXXXXXXXXXXX \
--p-r-primer XXXXXXXXXXXXXXXX \
--p-trunc-len 120 \
--o-reads ref-seqs.qza
「XXXXXXXXXXXXXXXX」の部分は任意のprimerシークエンス。
単純ベイズ分類器のモデル作成
単純ベイズ分類器のモデルを作成します。
裏で動いているのはPythonのscikit-learn 0.19.1に入ってるNaive Bayes classifierらしいです。
qiime feature-classifier fit-classifier-naive-bayes \
--i-reference-reads ref-seqs.qza \
--i-reference-taxonomy ref-taxonomy.qza \
--o-classifier classifier.qza
作成したモデルをテストする
公式に準じるとモデル作成に使った配列でテストしてますが(下記)、本当ならmockコミュニティとか使うべきなんでしょうね。
qiime feature-classifier classify-sklearn \
--i-classifier classifier.qza \
--i-reads rep-seqs.qza \
--o-classification taxonomy.qza
分類結果を可視化します。
qiime metadata tabulate \
--m-input-file taxonomy.qza \
--o-visualization taxonomy.qzv
qiime tools view taxonomy.qzv