マイクロバイオームの組成データを用いた共起ネットワークの生成と解析

## SCNICとは
SCNICとは、"Sparse Cooccurrence Network Investigation for Compositional data"の略であり、「組成データのための疎な共起ネットワーク分析」のことで、SparCCという相関係数の計算アプローチを用いて、マイクロバイオームの組成データの相関関係を推定するツール。

ここでいう組成データというのは、DADA2などで作成されたASVのテーブルデータや、SILVAデータベースなどにアサインして得た系統組成データを指す。

今回は、QIIME2にモジュールとして組み込まれている共起ネットワーク分析ツール`q2-SCNIC`の使い方を説明する。

## 相対量データにおける相関関係推定の難しさ

16S rRNAアンプリコンシーケンスなどでマイクロバイオームの解析をするとき、グループ間の微生物コミュニティの相関関係を推定することが多い。

しかし、次世代シーケンサによって得られたマイクロバイオームのデータを相対量に変換して解析を進めざるを得ないため、いろいろと解釈が難しくなってしまう。

QIIME2でいうと **バラついたサンプルごとのリード数をサブサンプリングで正規化する「希薄化」** がこれにあたる。
（16Sコピー数で正規化する方法もあるが、すべての細菌においてコピー数が知られているわけではないので、推奨されないことが多い。）

このように相対量に変換してしまうと、 ある細菌のASV（またはOTU）が１つ増加すると、それ以外の細菌のASVが減少する必要があり、 **本来は独立したASV同士であってもあたかも負の相関関係があるように見えてしまう** 。

![スクリーンショット 2021-07-30 12.41.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222325/0e5bd4df-8197-2538-aa66-940d0822dac2.png)

このような相対量のデータの相関関係を調べること自体が誤解を招くものだと言われている。

身体部位のマイクロバイオームデータをピアソン相関で推定し作ったネットワーク (左列)に対して、そのマイクロバイオームデータの相対存在量データをランダムにシャッフルしてピアソン相関で推定し作ったネットワーク（真ん中の列）は、なんと同様のパターンを示している。
**ピアソン相関で得られたネットワークは、生物学的な特徴ではなく、相対量の構造的なバイアスに起因している** ことがわかる。

<img width="450" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222325/e9c1260a-f80d-66e7-46c9-8c8943fa75c8.png">

> SparCCの[論文](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002687)より
Figure 1. Similar correlation networks are observed for real world vs. randomly shuffled bacterial abundance data.

SCNICでは、相関係数の算出にSparCCというアプローチの使用することで、希薄化（正規化）によって相対量に変換せずに、マイクロバイオームの組成データを用いてネットワーク分析が実施できる。

## SparCCを用いた相関係数の計算
SparCCでは、

1. 異なるASVの数が多い （= サンプル内の多様性が高い)
2. 真の相関ネットワークは「疎」 （ほとんどのASVはお互いに強い相関はない）

と仮定して、対数変換したASV間の分散を用いて真のASVの分散を概算している。
ちなみに疎ではない組成データ（多くのASV間で強い相関が見られる）においても、かなりロバストだと書かれている。

## q2-SCNICのインストール
condaでもpipでもインストール可能。

```bash

# QIIME2の起動（今回は2021.2バージョンで実行した）
conda activate qiime2-2021.2

# SCNICのインストール
conda install -q scnic

# プラグインのインストール
pip install git+https://github.com/shafferm/q2-SCNIC.git

# QIIME2のリフレッシュ
qiime dev refresh-cache

# 「fastsparがないよ」とエラーを出す場合はインストールする
conda install -c bioconda -c conda-forge --override-channels fastspar
```

## 解析の実行
### 0. テストデータの取得
テストデータとして、QIIME2 2021.4のドキュメントにある、おなじみの“Moving Pictures” tutorialから[Sequence quality control and feature table construction](https://docs.qiime2.org/2021.4/tutorials/moving-pictures/#sequence-quality-control-and-feature-table-construction)の`table.qza` をダウンロードする。
各サンプルの組成データを相対化しなくていいので、希薄化される前のASV数がバラついている`table.qza` をすぐに使うことができる。

```bash
# データのダウンロード
wget https://docs.qiime2.org/2021.4/data/tutorials/moving-pictures/table.qza
```

### 1. 組成データのフィルタリング
組成データ内に大量に0があると相関分析が面倒になるので、「ASV数が500未満のサンプル」と「すべてのサンプルにおける平均存在量が2未満のASV」をすべて削除する。

```bash
qiime SCNIC sparcc-filter \
  --i-table table.qza \
  --o-table-filtered table_filtered.qza
```
### 2. 相関係数の算出とネットワーク生成
フィルタリングされた組成データのASV間のすべてのペアワイズの組み合わせで相関係数を算出する。
ここで、SparCCアプローチを指定する。

```bash
qiime SCNIC calculate-correlations \
  --i-table table_filtered.qza \
  --p-method sparcc \
  --o-correlation-table correls.qza
```

### 3. モジュールの検出とサマリー作成
モジュールとは、高い相関が見られたASV間のネットワークのことで、これら相関関係ネットワークをそれぞれモジュール名をつけてクラスタリングする。

```bash
qiime SCNIC make-modules-on-correlations \
  --i-correlation-table correls.qza \
  --i-feature-table table.qza \
  --p-min-r .35 \
  --o-collapsed-table collapsed.qza \
  --o-correlation-network net.modules.qza \
  --o-module-membership membership.qza
```

[公式ドキュメント](https://github.com/shafferm/q2-SCNIC/blob/master/community_tutorial.md)を見ると、`make-modules-on-correlation-table`のままだが、SCNICの最新バージョンでは`make-modules-on-correlations`に変更されているので注意する。
`--p-min-r`は、最小の相関係数を指定するオプション。

`membership.qza`はqzvにすることでテーブルデータとして可視化ができる。

```bash
qiime metadata tabulate \
  --m-input-file membership.qza \
  --o-visualization membership.qzv
```
[QIIME2 VIEW](https://view.qiime2.org/)にて`membership.qzv`を読み込むと以下のように表示される。

![スクリーンショット 2021-07-30 11.07.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222325/14dee763-c57a-f44d-4989-165909280777.png)

### 4. Cytoscapeでのネットワーク図の可視化
`net.modules.qza`からネットワーク図として可視化できるgmlファイルを出力できる。

```bash
mkdir extracted-network
qiime tools extract --input-path net.modules.qza --output-path extracted-network/
```
出力された`network.gml`をCytoscapeに読み込ませると可視化できる。
可視性のためのレイアウトには工夫が必要そう。
ASVだとQIIME2からランダム文字列を付加されるため、何がなんだかわからなくなるので、種をアサインした組成データでやるのが好ましい。

![スクリーンショット 2021-07-30 11.28.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222325/ab31b6a2-efaa-87f0-7875-1f3f5dffd621.png)

## 参考文献

[q2-SCNIC - github](https://github.com/shafferm/q2-SCNIC)

SparCCの論文
[Inferring Correlation Networks from Genomic Survey Data](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002687)