見出し画像

RでWGCNA解析~Soft Thresholdの選択をR上で行う~

 前回の続きです。スケールフリー性を持つようなネットワーク構築のためにSoft Thresholdの選択が大事であると言いました。ここではサンプルデータを用いて実際にSoft Thresholdの選択とそのR^2値を求めて妥当性の評価を行っていきます。

 今回はWGCNAチュートリアルにあったサンプルデータを使います。以下からダウンロードしましょう。


Soft Threshold(sft)の選択

 まずはデータの読み込みとライブラリの準備です。データ自体がR1C1参照方式になっていることも確認してください。

library(WGCNA);
options(stringsAsFactors = FALSE);
#データを行列として読み込み
Data1 = read.csv("LiverFemale3600.csv",header=T,row.names=1)
Data2<- t(as.matrix(Data1))
#ここの転置しないと組織ごとにモジュールを検出してしまいます

 次にこれを使ってsftを選択するためのグラフをプロットします。データによって変えるべき場所は説明するので、それ以外はそのままコピペで大丈夫です。

#R^2値の計算
powers  =  c(1:30)
sft <- pickSoftThreshold(Data2, powerVector = powers, verbose = 5)

#計算した値のプロット
cex1 = 0.9;

plot(sft$fitIndices[,1], -sign(sft$fitIndices[,3])*sft$fitIndices[,2],
xlab="Soft Threshold (power)",ylab="Scale Free Topology Model Fit,signed R^2",type="n",
main = paste("Scale independence"));
text(sft$fitIndices[,1], -sign(sft$fitIndices[,3])*sft$fitIndices[,2],
labels=powers,cex=cex1,col="red");

abline(h=0.90,col="red")

 ここでの"power"はsftそのものになります。前回の記事でwgcnaでは類似度を冪乗することでノード同士のつながりをより強調してスケールフリー性を持たせるといいましたが、ここではとりあえず1乗から30乗まで試しています。powers=c(1:30)がそれに該当します。対象データによって値を変えましょう。

 あとはそれをグラフとしてプロットします。縦軸をR^2値、横軸をsftとしています。下に結果を示し、そのグラフを読み取っていきます。
 基本的にsftを上げていくと、R^2値は頭打ちになります。今回の場合9~10の辺りからほぼ横ばいになっているのが分かります。前回の記事でも言いましたが、スケールフリー性を持たせることのできるsftの中で最小のものを選び取りたいので、今回は9か10を選択することになります。どちらを選択するかは恣意的になるので、そこを理解したうえで解析を進めましょう。今回は10を選択します。

 コードの中の"cex"は文字の大きさを指定するもので、今回は0.9にしています。今回は30乗までしか計算していませんが、場合によっては100乗まで見ることもあるので、文字が大きいとグラフが見づらくなります。適宜変更しましょう。これはあってもなくても良いです。
 "abline"はsftの選択をしやすくするためにラインを引くためのコードです。今回は高さ0.90に引きましたが、これも適宜高さを変えましょう。目視できる場合は引かなくても良いです。

各ノードがどれくらいの次数を見てみる

 powerによって各ノードの次数(ほかのノードとの類似度の総和)の平均値を見てみます。スケールフリーなデータの場合、ある特定のノードだけがおおきなハブになるので、あるsftを境に小さくなるはずです。

#スケールフリー性を持つかどうかを見る
plot(sft$fitIndices[,1], sft$fitIndices[,5],
xlab="Soft Threshold (power)",ylab="Mean Connectivity", type="n",
main = paste("Mean connectivity"))
text(sft$fitIndices[,1], sft$fitIndices[,5], labels=powers, cex=cex1,col="red")


 おそよ10近辺でほぼ横ばいになっていることが分かりました。ある程度スケールフリー性が確認できたので、次回はこの冪乗した類似度を用いてTOMの計算、それからもう一度スケールフリー性が担保されているかをR上で検証するパートになります。

↓前回

↓次回の記事


この記事が気に入ったらサポートをしてみませんか?