研究メモブログの目次

【2】16S rRNA 菌叢解析やってみた(メタデータ作成~菌叢棒グラフ作成まで)

こんにちは~。ガイです。前回の続きを書いていこうと思います。

前回までで、Qiime2 conceptual-overview でいうところのFeature Table とRepresentative Sequences が手に入りました。ここからようやく解析らしい解析に入っていけます。本当はconceptual-overview 貼りたかったんですが、画像引用OK かよくわからなかったのでよかったら以下のページを見てみてください。

 

docs.qiime2.org

METADATA.tsv の作成

今後、様々な解析に使うメタデータを作成します。とっても大事です。

sample-id  を一番左に置き、ほかの列に採集部位や群名など、今後の解析におけるグループ分けに必要な情報などを入れていきます。自分のデータに合わせてExcel などで作ってください。

Excel ファイルをtsv 形式で保存するには、テキスト(タブ形式)で保存し、拡張子を.tsv に直します。

ちなみに、公式が公開しているメタデータは以下のような内容です。

参考:https://data.qiime2.org/2023.2/tutorials/moving-pictures/

sample_metadata.tsv(公式チュートリアル)

Taxonomy analysis

RESCRIPt を使ってNaive Bayes 分類器を作成

Qiime2 による分類には、まずNaive Bayes 分類器を作る必要があります。

一応、すでにトレーニングされたデータベースも公開されているんですが、公式が以下のように言っておられます。

Taxonomic classifiers perform best when they are trained based on your specific sample preparation and sequencing parameters, including the primers that were used for amplification and the length of your sequence reads. Therefore in general you should follow the instructions in Training feature classifiers with q2-feature-classifier to train your own taxonomic classifiers (for example, from the marker gene reference databases below).  Data resources — QIIME 2 2023.2.0 documentation

よって、以下のチュートリアルを参考に進めました。

forum.qiime2.org

ちなみに、V3-V4 領域だけをトレーニングすることもできるようなのですが、試していません。今回、特殊なプライマーを使用したこともあり、フルレングスで進めています。

Naive Bayes classifiers trained on V3-V4 region for 16S and 18S data for a newest version of qiime2 (qiime2-2020.11) - User Support - QIIME 2 Forum

 

 

RESCRIPt および周辺ソフトのインストール

初めに、公式の指示にしたがってインストールを試みました。

公式:GitHub - bokulich-lab/RESCRIPt: REference Sequence annotation and CuRatIon Pipeline

conda install \ -c conda-forge -c bioconda -c qiime2 -c https://packages.qiime2.org/qiime2/2023.5/tested/ -c defaults \ qiime2 q2cli q2templates q2-types q2-longitudinal q2-feature-classifier 'q2-types-genomics>2023.2' \ "pandas>=0.25.3" xmltodict ncbi-datasets-pylib

これでインストールできた人は以下は読み飛ばしてかまいません。わたしは上手くいかなかったため、公式に書かれていたソフトウェアをひとつひとつインストールしていくことにしました。

conda install -c conda-forge xmltodict 
conda install -c bioconda ncbi-datasets-pylib
conda install -c https://packages.qiime2.org/qiime2/2023.5/tested/ 'q2-types-genomics>2023.5' #これが全然進まない。  
ModuleNotFoundError: No module named 'q2_types_genomics' のトラブルシューティング

conda install -c https://packages.qiime2.org/qiime2/2023.5/tested/ 'q2-types-genomics>2023.5' が一生終わらないので業を煮やしてRESCRIPtのインストールをやってみました。すると

pip install git+https://github.com/bokulich-lab/RESCRIPt.git 

#To view a help menu for using rescript via the QIIME 2 CLI: qiime dev refresh-cache ModuleNotFoundError: No module named 'q2_types_genomics'

やはりq2_types_genomics がないと先に進めないようです。しかも、さらに悪いことに、無理やり入れようとしたせいなのかQiime2 そのものが動かなくなる悪夢に見舞われました。こうなったらどうにかしてq2_types_genomics を入れるしかない。

公式スクリプトを見るに、https://packages.qiime2.org/qiime2/2023.5/tested/ に何かあるだろうと思ったので、とんでみるとlinux-64 というページがありました。

https://packages.qiime2.org/qiime2/2023.5/tested/linux-64/

そのページになんとなくよさげな以下のファイル(https://packages.qiime2.org/qiime2/2023.5/tested/linux-64/q2-types-genomics-2023.5.0.dev0+4.gc4f304a-py38_0.tar.bz2)を発見したので、最新作をwget でget。

解凍してみます。

tar -jxvf q2-types-genomics-2023.5.0.dev0+4.gc4f304a-py38_0.tar.bz2

「lib」と「info」というフォルダが出てきました。

lib の中を見ると「lib/python3.8/site-packages/lib/python3.8/site-packages/q2_types_genomics」と「q2_types_genomics-2023.5.0.dev0+4.gc4f304a-py3.8.egg-info」というフォルダがありました。

さらに、まったく同じ名前のフォルダをminiconda フォルダの中に発見しました。

/miniconda3/envs/qiime2-2023.2/lib/python3.8/site-packages

ここに先ほどのq2_types_genomicsq2_types_genomics-2023.5.0.dev0+4.gc4f304a-py3.8.egg-infoを移してみました。

そして、qiime --help を実行するとqiime2 が動くようになっていました。

よかった~。

さらに、 qiime rescript --help
Usage: qiime rescript [OPTIONS] COMMAND [ARGS]...

rescript も動き出しました!

が、危ないかもしれないのでこの方法使う際は自己責任でお願いします!

 

SILVAデータを取得する

公式チュートリアル:Getting SILVA data the easy way https://forum.qiime2.org/t/processing-filtering-and-evaluating-the-silva-database-and-other-reference-sequence-data-with-rescript/15494

qiime rescript get-silva-data \
    --p-version '138.1' \
    --p-target 'SSURef_NR99' \
    --o-silva-sequences silva-138.1-ssu-nr99-rna-seqs.qza \
  --o-silva-taxonomy silva-138.1-ssu-nr99-tax.qza

オプションの説明

##select specific ranks for your SILVA taxonomy
--p-ranks flag to the either the parse-silva-taxonomy or get-silva-data commands. 
###For example:
--p-ranks domain kingdom phylum class order suborder family subfamily genus

 

上手くいくと以下の文章が表示されます。

Saved FeatureData[RNASequence] to: silva-138.1-ssu-nr99-rna-seqs.qza Saved FeatureData[Taxonomy] to: silva-138.1-ssu-nr99-tax.qza

ダウンロードしたRNA 配列をDNA 配列にリバース

この公式チュートリアルでダウンロードした配列はRNA 配列なので、DNA 配列にリバースする必要があります。

公式チュートリアルhttps://forum.qiime2.org/t/processing-filtering-and-evaluating-the-silva-database-and-other-reference-sequence-data-with-rescript/15494

qiime rescript reverse-transcribe \
    --i-rna-sequences silva-138.1-ssu-nr99-rna-seqs.qza \
    --o-dna-sequences silva-138.1-ssu-nr99-seqs.qza
DNA 配列から低品質配列を除去

公式チュートリアル:“Culling” low-quality sequences with cull-seqs Processing, filtering, and evaluating the SILVA database (and other reference sequence data) with RESCRIPt - Tutorials - QIIME 2 Forum

qiime rescript cull-seqs \
    --i-sequences silva-138.1-ssu-nr99-seqs.qza \
    --o-clean-sequences silva-138.1-ssu-nr99-seqs-cleaned.qza
配列を長さと分類群でフィルタリングする

公式チュートリアル:Filtering sequences by length and taxonomy 

https://forum.qiime2.org/t/processing-filtering-and-evaluating-the-silva-database-and-other-reference-sequence-data-with-rescript/15494#heading--fourth-header

qiime rescript filter-seqs-length-by-taxon \
    --i-sequences silva-138.1-ssu-nr99-seqs-cleaned.qza \
    --i-taxonomy silva-138.1-ssu-nr99-tax.qza \
    --p-labels Archaea Bacteria Eukaryota \
  --p-min-lens 900 1200 1400 \
    --o-filtered-seqs silva-138.1-ssu-nr99-seqs-filt.qza \
    --o-discarded-seqs silva-138.1-ssu-nr99-seqs-discard.qza
重複配列の除去

公式チュートリアル:Dereplication of sequences and taxonomy 

https://forum.qiime2.org/t/processing-filtering-and-evaluating-the-silva-database-and-other-reference-sequence-data-with-rescript/15494

メモリ128GB で一時間かかったというメモが残されており、かなり重い作業と思われますのでご注意。わたしはスパコンを使いました。

qiime rescript dereplicate \
    --i-sequences silva-138.1-ssu-nr99-seqs-filt.qza \
    --i-taxa silva-138.1-ssu-nr99-tax.qza \
    --p-perc-identity 0.97 \
    --p-mode 'lca' \
    --o-dereplicated-sequences silva-138.1-ssu-c97-seqs-derep-lca.qza \
    --o-dereplicated-taxa silva-138.1-ssu-c97-tax-derep-lca.qza
Naive Bayes 分類器(classifier-naive-bayes)の作成

公式チュートリアル:sparkler: Wonderful! :sparkler:
Now we are ready to make our classifier for use on full-length SSU sequences. :hammer_and_wrench: 

https://forum.qiime2.org/t/processing-filtering-and-evaluating-the-silva-database-and-other-reference-sequence-data-with-rescript/15494

これメモリ64GB で四時間かかったというメモが残されていたのでご注意ください。

qiime feature-classifier fit-classifier-naive-bayes \
  --i-reference-reads  silva-138.1-ssu-c97-seqs-derep-lca.qza \
  --i-reference-taxonomy silva-138.1-ssu-c97-tax-derep-lca.qza \
  --o-classifier silva-138.1-ssu-nr99-classifier.qza

これにて分類器のできあがり。

 

Naive Bayes 分類器を使ってサンプルの分類学的構成を調べる

公式チュートリアル“Moving Pictures” tutorial — QIIME 2 2020.8.0 documentation

qiime feature-classifier classify-sklearn \
--i-classifier ~/path/to/silva-138.1-ssu-nr99-classifier.qza \
--i-reads qza/rep-seqs.qza \
--o-classification qza/taxonomy.qza
feature-classifier classify-sklearn の結果の可視化
qiime metadata tabulate \
--m-input-file qza/taxonomy.qza \
--o-visualization qzv/taxonomy.qzv

qzv ファイルをQiime2 View https://view.qiime2.org/に投げ込みます。

taxonomy.qzv(公式チュートリアル QIIME 2 View より)

 

ここまでのアウトプットの整理

table.qza # FeatureTable[Frequency]: 配列ID(ASV)ごとに各サンプルにおける頻度が格納されている 

stats.qza # SampleData[DADA2Stats]: DADA2 後に残ったリードの頻度情報

rep-seqs.qza # FeatureData[Sequence]: 配列ID と配列情報
例 >4b5eeb300368260019c1fbc7a3c718fc TACGGAGGATCCGAGCGTTATCCGGATTTATTGGGTTTAAAGGGAGCGTAGATGGATGTTTAAGTCAGTTGTGAAAGTTTGCGGCTCAACCGTAAAATTGCAGTTGATACTGGATATCTT

taxonomy.qza # FeatureData[Taxonomy]: 配列ID と分類群情報とその頻度
Feature ID #q2:types    Taxon categorical    Confidence categorical ff8c7f94f941a0c647120d4e142db316    k__Bacteria; p__Firmicutes; c__Clostridia; o__Clostridiales; f__Veillonellaceae; g__Dialister; s__    0.9997197443199501
ff3df50eea7490dd794148649c480fd3    k__Bacteria; p__Firmicutes; c__Clostridia; o__Clostridiales; f__Lachnospiraceae    0.9920784845661842
 

菌叢の可視化(棒グラフの作成)

qiime taxa barplot \
--i-table qza/selected_table.dada.qza \
--i-taxonomy qza/taxonomy.qza \
--m-metadata-file METADATA.tsv \
--o-visualization qzv/taxa-bar-plots.qzv

qzv ファイルをQiime2 View https://view.qiime2.org/に投げ込むと以下のようなグラフが出てきます。

taxa-bar-plots.qzv Level2(公式チュートリアル QIIME 2 View より)

Taxonomic Level を変更することで、Level1のKingdom:界からLevel7の種まで分類レベルを変更できます。上の図ではLevelは2になっています。

Sort Samples By を変更することで棒グラフ整列時の優先順を決めることができます。 以下の写真では分類群を種(Level 7)まで分類し、優先順位をbody-site で決めています。

taxa-bar-plots.qzv Level7(公式チュートリアル QIIME 2 View より)

 

今日のところはここまでにしておきます!お疲れ様でした。