![見出し画像](https://assets.st-note.com/production/uploads/images/64420650/rectangle_large_type_2_9bd3f92f4fb366d3ba898324dbe5887b.jpeg?width=1200)
初心者の菌叢解析 ~Qiime2でclassifier.qzaを作成する。(Docker)~
Qiime2をインストールしていない方は以下の投稿もご確認いただき、Qiime2をインストールしてみてください。
また、Qiime2の使い方についてもシリーズで投稿しています。
先日、Qiime2にて解析を行い、一番最後にtaxonomyの割り振りをする作業をしていたのですが、エラーコードがでてしまいとても切ない気持ちになりました。
taxonomy.qzaファイルを取得する為に打ち込んだコードは以下になります。
qiime feature-classifier classify-sklearn \
--i-classifier gg-13-8-99-515-806-nb-classifier.qza\
--i-reads rep-seqs.qza \
--o-classification taxonomy.qza
classifierはQiime2のチュートリアルの中で用いられていたファイルの
「gg-13-8-99-515-806-nb-classifier.qza」を使用しました。
※ Qiime2 docs “Moving Pictures” tutorial 参照 https://docs.qiime2.org/2020.8/tutorials/moving-pictures/
上記のコードを実行したところ以下のエラーコードが出ました。
"The scikit-learn version (0.20.2) used to generate this artifact does not match the current version of scikit-learn installed (0.23.1). Please retrain your classifier for your current deployment to prevent data-corruption errors."
早速コピペしてGoogle先生に尋ねたところ、Qiime2 forumにて似たようなエラーコードの投稿がありました。
それによると、Qiime2のバージョンが同じclassifier.qzaをダウンロードするか、自分でclassifier.qzaを作成してくださいとのことでした。
ですので、自分でclassifier.qzaを作成しようと思い、Qiime2 docsのチュートリアルで調べてみました。
※ Qiime2 docs "Training feature classifiers with q2-feature-classifier" 参照 https://docs.qiime2.org/2020.8/tutorials/feature-classifier/
本投稿の内容はアップデート等の影響で一部利用できない場合があります。
その点を踏まえ、改訂版を公開していますので、そちらもご確認ください。
1. Green geneのデータファイルをダウンロード
まず、QiimeのData Files and Other Resourcesから「13_8_(most recent)」をクリックしてファイルをダウンロードしました。
※ Qiime "Data Files and Other Resources" 参照 http://qiime.org/home_static/dataFiles.html
「gg_13_8_otus.tar」というファイルがダウンロードされ、
当ファイルを展開すると「gg_13_8_otus」というフォルダが出てきます。
「gg_13_8_otus」フォルダの中身は以下の通りでした。
![画像1](https://assets.st-note.com/production/uploads/images/33555533/picture_pc_0586f9afa5fa3ede1f7445821f81ac1e.png)
今回使用するのは「rep_set」フォルダの「99_otus.fasta」というファイルと「taxonomy」フォルダの「99_otu_taxonomy.txt」というファイルです。
インポート前に一応それぞれのファイルの中身を確認しておいてください。というのも、なぜだかは分からなかったのですが、いつの間にか中身が壊れていて、エラーが出たことがありました。
テキストエディットで開くと以下の通りで、こんな感じの内容が延々と続くフォルダでした。
![画像2](https://assets.st-note.com/production/uploads/images/33557147/picture_pc_53c0feb817332c60aeb94a4c558cc448.png?width=1200)
2. フォルダを作成後、DockerにてQiime2を起動しファイルをインポート
ターミナル起動後、デスクトップに移動します。そして、classifier.qza作成用フォルダを作成し、移動します。Qiime2のチュートリアルでは「training-feature-classifiers」というファイルで作業するようです。
cd ここにデスクトップの絶対パスを入力(おそらく/Users/[それぞれの名前]/Desktop)
mkdir training-feature-classifiers
cd training-feature-classifiers
「training-feature-classifiers」というファイルがデスクトップ上に作成されるので、そこに「99_otus.fasta」と「99_otu_taxonomy.txt」というファイルをコピペしておきます。
Dockerを通してQiime2を起動します。(バージョンはそれぞれのものを使用してください。バージョンが違う場合は勝手にDockerによってダウンロードされると思います。)
docker run -t -i -v $(pwd):/data qiime2/core:2020.6 /bin/bash
「99_otus.fasta」と「99_otu_taxonomy.txt」をインポートします(.qzaファイルに変換します)。
qiime tools import \
--type 'FeatureData[Sequence]' \
--input-path 99_otus.fasta \
--output-path 99_otus.qza
qiime tools import \
--type 'FeatureData[Taxonomy]' \
--input-format HeaderlessTSVTaxonomyFormat \
--input-path 99_otu_taxonomy.txt \
--output-path ref-taxonomy.qza
3. 16S rRNA配列上から今回の解析に必要な部分を取り出し、classifier.qzaファイルを作成
サンプル(腸管内容物や糞便等)からTotal DNAを抽出した後に、16S rRNA配列の一部を1'st PCRにて増幅していると思います。
その時に使用したプライマーの配列を次のコマンドで入力します。
ただ注意点として、入力するのは「16S rRNA配列に結合するプライマーの配列」のみになります。1'st PCRで用いるプライマーには2'nd PCRでIndex配列を付加するための付加配列が含まれている場合が多いと思います。
そのため、16S rRNA配列上から今回の解析に必要な部分を取り出し、classifier.qzaファイルを作成する場合はこの付加配列は必要ないということになります。
このことを踏まえて以下のコマンドを実行します。
qiime feature-classifier extract-reads \
--i-sequences 99_otus.qza \
--p-f-primer 「Forward primerの配列を入れる」例: CCTACGGGNGGCWGCAG \
--p-r-primer 「Reverse primerの配列を入れる」例: GACTACHVGGGTATCTAATCC \
--p-max-length 「ここには1'st PCR産物のサイズを入れる」 例: 600\
--o-reads ref-seqs.qza
「--p-f-primer」の後にはForward primerの16S rRNA配列に対する結合配列を入力し(大文字)、「--p-r-primer」の後にはReverse primerの結合配列を入力します。
「--p-max-length」は入力した数字以上はカットするためのコマンドなので、1'st PCRのPCR産物のサイズ+αを入力します(私が多用するV3-4領域であれば、600 bpくらい)。
最後に以下のコマンドを実行し、終了。
qiime feature-classifier fit-classifier-naive-bayes \
--i-reference-reads ref-seqs.qza \
--i-reference-taxonomy ref-taxonomy.qza \
--o-classifier classifier.qza
classifier.qzaファイルが生成されれば終了なので、このファイルを目的フォルダにコピペする。
Dockerを終了し、目的フォルダに移動して、再びDocker・Qiime2を起動し、以下のコマンドを実行。
--i-classifier 以下のコマンドはclassifier.qzaに変更してあります。
qiime feature-classifier classify-sklearn \
--i-classifier classifier.qza\
--i-reads ref-seqs.qza \
--o-classification taxonomy.qza
エラーでなかった。
ちなみにここで紹介させていただいた内容はQiime2 docsに記載してあることを元に作成しております。
※ Qiime2 docs 参照 https://docs.qiime2.org/2020.8/
ここまで読んでいただき、ありがとうございました。何か間違い等があればご指摘いただければと思います。