遺伝子共発現ネットワークの詳細なチュートリアルのWGCNA建設

この記事では、コーミングのために、より混沌とした中国の資源である、と私はあなたがピットに乗らないことを願っています言及されていない重要なパラメータの数を、追加しました。

1.はじめに

1.1背景

WGCNAは(共発現ネットワーク解析重み付け遺伝子共発現ネットワーク解析、遺伝子重量)複数のサンプルの遺伝子発現パターンの解析方法で、同様のパターンが特定の形質またはテーブルを用いて遺伝子クラスター、及び分析モジュールを表すことができます。タイプ間の関係は、それが広くゲノミクスの研究に使用されています。

のみ差次的に発現される遺伝子を焦点に比べ、WGCNAはすべて識別するために数千または遺伝子における1万最大変化や目的情報の遺伝子を使用する遺伝子セットを、有意な相関分析および表現型。両方の情報をフルに活用するだけでなく、多重仮説検定補正の問題を排除する遺伝子と表現型のいくつかのセットの変換に関連する表現型に関連する遺伝子の数千。

まず、ネットワークWGCNA遺伝子は従わないと仮定しないサイズ分布、遺伝子機能ネットワークが共発現に隣接して形成された(スケールフリーネットワーク)、相関行列の遺伝子を定義し、次いで、非類似度係数の異なるノードを計算し、それに応じて(階層的クラスタリングツリーを構築階層的クラスタリング異なる遺伝子クラスターツリーモジュールの異なるブランチ(Module1の)、遺伝子高度のモジュールの同時発現を表すツリー)が、遺伝子の同時の低い発現レベルの異なるモジュールに属します。

1.2スケールフリーネットワーク

数学は、各ノードのグラフ理論では、ネットワーク図の名前である、すなわち、重要な概念を有する。度(度)。そのポイントに関連付けられたエッジの図形数の点を指します。次の図は、考えていないならば、それは一般的なネットワークでの生活は、ランダムネットワークであろうと考えるのは簡単だ、それは、各ノードの相対的な程度の平均値です。第2のマップは、しかし、そのスケールフリーネットワークは、より安定した代替物です。スケールフリーネットワークがポイントのかなり高い度を有する一般的に少数のノードが存在するという特徴を持っている、これらの点は、ハブと呼ばれています。ハブは、他のノードの数が少ない、ネットワーク全体の最終的な構成に関連しています。配電度を有する下位ノードの数とノード間ネットワークの程度。生物は、スケールフリーネットワークのために特に進化の理由から、むしろランダムネットワークよりもスケールフリーネットワークを選択し、いくつかの重要な遺伝子は、主な機能を実行し、このネットワークは、非常に良好な堅牢性(堅牢)を持って、それは、完全なハブと同じくらいの長さであります外部からの刺激を受けた場合、ランダムなネットワークは、被害の程度は、それが強さと興奮に正比例苦しんでいる間のセックスは、特定の刺激の影響を受けて体の生涯を通じて基本的な活動は、大きな影響を受けることはありません。

 
ランダムネットワークは、ほとんどのノード2が3、0と1と、4つの側縁が規模ネットワークなしめったにないエッジストリップに接続され、ほとんどのノードが一の側に接続され、ノードの数が少ない(赤)エッジのにも多数。

1.3関連用語

  • 共発現ネットワーク:ポイントは、遺伝子エッジが遺伝子発現の相関を表す表します。それは重み付け手段相関値算出深い回(深い即ち倍値ソフト閾値(パワー、この関数はないpickSoftThresholdは、適切な電力を決定です))。無向ネットワーク(符号なしネットワーク)はエッジ特性として算出されるabs(cor(genex, geney)) ^ power、有向ネットワーク(署名されたネットワーク)はエッジ特性として算出され(1+cor(genex, geney)/2) ^ power、符号ハイブリッドは、エッジ属性として算出されるcor(genex, geney)^power if cor>0 else 0ハイブリッドは、それが重みネットワークは、非重み付けを含んでおり手段サインネットワークこのアプローチは、ラインの相関値以上のように、弱いまたは負の相関を弱める強い相関を補強无标度网络特性、より生物学的に重要。加えて、ハード-ソフト閾値があり、そうでない場合は閾値はs_ij場合、> a_ij = 1計算されるβ a_ij = 0。βは、ハードしきい値(ハードしきい値)です。

  • モジュール1(モジュール)も遺伝子セット内の高さ。ネットワークが存在しない場合、モジュールは非常にある関連遺伝子。有向ネットワークでは、モジュールは、高度で正に相関する遺伝子。

  • コネクティビティ(接続性):概念ネットワーク「度」(度)Aに似ています。各遺伝子の接続は、それに接続された遺伝子です边属性之和

  • モジュールeigengene E:最初の主成分モデルを所与の代表的なモデル全体の遺伝子発現プロファイル即ち、代わり行列とベクトルの、後の計算を容易にします。

  • Intramodular接続性:所与の遺伝子と、モデル内の他の遺伝子の関連の所定の度合いは、遺伝子は、決定された所属あります。

  • 隣接行列(隣接行列):遺伝子および遺伝子の間の相関値からなる重み付け行列。

  • TOM(トポロジカル重なり行列):ノイズと偽、及び得られた新たな距離マトリックスを低減するために、マトリックスと重なるように隣接マトリックスコンバータトポロジ、この情報は、ネットワークTOM図を構築または描画するために使用することができます。

2.一般的な手順

 
WGCNA一般的な手順

3.コード

使用WGCNAはワンステップのネットワークを構築している、ステップバイステップの方法があり、理解を確実にするためには、ステップバイステップの上に少なくとも一度お勧めします。

異なるオペレーティングシステムに応じてインストールWGCNAが若干異なる場合があり、私は本当にMacOSの中にインストールするには、多くの労力を費やしました。このセクションでは言及していません。

# 加载必须的包并做参数设置
library(MASS)
library(class)
library(cluster)
library(impute)
library(Hmisc)
library(WGCNA)
options(stringsAsFactors = F)

遺伝子発現データが読み込まれ、列にその遺伝子を確保するために、変換を行うために注意を払う、サンプルライン、公式にはDeseq2推奨varianceStabilizingTransformationまたはlog2(x+1)変換後に正規化するデータを。異なるバッチからのデータならば、バッチ効果を除去する必要があります。システムがあればオフセットデータは、クォンタイル規格化の下で行われる必要があります。通常、サンプル数は15以上が必要。サンプル数は20以上、より良い、より多くのサンプル、より安定した結果である場合。

dat0 <- read.csv("./01raw_data/GBM55and65and8000.csv")
datExprdataOne <- t(dat0[,15:69])
datExprdataTwo <- t(dat0[, 70:134])
datSummary <- dat0[, c(1:14)]
dim(datExprdataOne); dim(datExprdataTwo); dim(datSummary)
rm(dat0)
#[1]   55 8000
#[1]   65 8000
#[1] 8000   14

テストデータの品質

gsg = goodSamplesGenes(datExprdataOne, verbose = 3)
if (!gsg$allOK){
  # Optionally, print the gene and sample names that were removed:
  if (sum(!gsg$goodGenes)>0) printFlush(paste("Removing genes:", paste(names(datExprdataOne)[!gsg$goodGenes], collapse = ","))); if (sum(!gsg$goodSamples)>0) printFlush(paste("Removing samples:", paste(rownames(datExprdataOne)[!gsg$goodSamples], collapse = ","))); # Remove the offending genes and samples from the data: datExprdataOne = datExprdataOne[gsg$goodSamples, gsg$goodGenes] } #Flagging genes and samples with too many missing values... # ..step 1 

外れ値をチェックし、結果には表示されません

sampleTree = hclust(dist(datExprdataOne), method = "average")
plot(sampleTree, main = "Sample clustering to detect outliers", sub="", xlab="")
 
外れ値検出

ソフト閾値をフィルタリング、無向ネットワークは、ネットワーク電源30未満15以下であり、全く電力値は、スケールフリーネットワークマップの構造のR ^ 2 0.8または電源100以下までの平均的な接続を可能にしないが原因であってもよいですあまりの違いに起因するいくつかのサンプルと他のサンプル。これは、このような表現上のバッチ効果、サンプルの不均一や実験条件としてあまりにも多くの影響によって引き起こされる可能性が除去される必要があります。

powers1 <- c(seq(1, 10, by=1), seq(12, 20, by=2))
sft <- pickSoftThreshold(datExprdataOne, powerVector = powers1)
RpowerTable <- pickSoftThreshold(datExprdataOne, powerVector = powers1)[[2]]
cex1 = 0.7
par(mfrow = c(1,2))
plot(RpowerTable[,1], -sign(RpowerTable[,3])*RpowerTable[,2], xlab = "soft threshold (power)", ylab = "scale free topology model fit, signes R^2", type = "n")
text(RpowerTable[,1], -sign(RpowerTable[,3])*RpowerTable[,2], labels = powers1, cex = cex1, col = "red") abline(h = 0.95, col = "red") plot(RpowerTable[,1], RpowerTable[,5], xlab = "soft threshold (power)", ylab = "mean connectivity", type = "n") text(RpowerTable[,1], RpowerTable[,5], labels = powers1, cex = cex1, col = "red") 
 
ソフトしきい値スクリーニング

横軸は、ソフトしきい値(電力)であり、縦軸がスケールフリーネットワーク特性(ノンスケール)に沿って、値が大きいほど、スケールフリーネットワークの評価パラメータを表します。
私たちはすることができ、私たちはソフトしきい値を得るのを助けるためにシステムパラメータを使用することができます

sft$powerEstimate
#4

4これは、標準的なスクリーニングR二乗= 0.85であるので、与えられたが、我々は0.9のR二乗値ことが期待され、6の選択パワー値。

電力= 6接続性、トポロジ図のスケールフリーネットワークの可視化を使用して計算しました。

betal = 6
k.dataOne <- softConnectivity(datExprdataOne, power = betal) -1
k.dataTwo <- softConnectivity(datExprdataTwo, power = betal) - 1
par(mfrow=c(2,2))
scaleFreePlot(k.dataOne, main = paste("data set I, power=", betal), truncated = F)
scaleFreePlot(k.dataTwo, main = paste("data set II, power=", betal), truncated = F)
 
データは私が自由なプロットを拡大します

 
データIIのスケールフリープロット

その後の分析のための遺伝子として最高の通信3600をスクリーニングすることが、インビボでより多くの遺伝子は、スケールフリーネットワークの図であるので、このステップは、一般的にスクリーニングされていません。

kCut <- 3601
kRank <- rank(-k.dataOne)
vardataOne <- apply(datExprdataOne, 2, var)
vardataTwo <- apply(datExprdataTwo, 2, var) restK <- kRank <= kCut & vardataOne >0 & vardataTwo > 0 ADJdataOne <- adjacency(datExpr = datExprdataOne[,restK], power = betal) dissTOMdataOne <- TOMdist(ADJdataOne) hierTOMdataOne <- hclust(as.dist(dissTOMdataOne), method = "average") par(mfrow = c(1,1)) plot(hierTOMdataOne, labels = F, main = "dendrogram, 3600 mast connected in data set I") 
 
データIの階層的クラスタリングを図

階層的クラスタリングツリー表示モジュールは、灰色であり、分類されていない本明細書中で使用される、モジュールのゲノムにcutreeStaticColorModule1の検出が、複雑な遺伝的構造のために推奨しますcutreeDynamic特定のパラメータは、適切なモジュールを与えるように選択することができ、その一部。

colordataOne <- cutreeStaticColor(hierTOMdataOne, cutHeight = 0.94, minSize = 125) par(mfrow=c(2,1), mar = c(2,4,1,1)) plot(hierTOMdataOne, main = "Glioblastoma data set 1, n = 55", labels = F, xlab = "", sub = "") plotColorUnderTree(hierTOMdataOne, colors = data.frame(module = colordataOne)) title("module membership data set I") 
 
データI階層的クラスタリングマップ

その後のための方法は、より多くのeigegeneを取得するために、より多くのモジュールをしたいです。

dataOne_net = blockwiseModules(datExprdataOne, power = 6, maxBlockSize = 200,
                       TOMType = "signed", minModuleSize = 30,
                       reassignThreshold = 0, mergeCutHeight = 0.25, numericLabels = TRUE, pamRespectsDendro = FALSE, saveTOMs=TRUE, corType = "pearson", loadTOMs=TRUE, saveTOMFileBase = "DataI.tom", verbose = 3) # Calculating module eigengenes block-wise from all genes # Flagging genes and samples with too many missing values... # ..step 1 # ....pre-clustering genes to determine blocks.. # Projective K-means: # ..k-means clustering.. # ..merging smaller clusters... # Block sizes: 

図の描画モジュールとの間の相関。

dataOne_MEs <- dataOne_net$MEs

plotEigengeneNetworks(dataOne_MEs, "Eigengene adjacency heatmap", marDendro = c(3,3,2,4), marHeatmap = c(3,4,2,2), plotDendrograms = T, xLabelsAngle = 90) 
 
図クラスタリングと熱eigengene

可視化遺伝子ネットワーク(TOMプロット)

load(dataOne_net$TOMFiles[1], verbose=T)

## Loading objects:
##   TOM

TOM <- as.matrix(TOM)

dissTOM = 1-TOM # Transform dissTOM with a power to make moderately strong # connections more visible in the heatmap plotTOM = dissTOM^7 # Set diagonal to NA for a nicer plot diag(plotTOM) = NA # Call the plot function TOMplot(plotTOM, dataOne_net$dendrograms, main = "Network heatmap plot, all genes") 
 
データI的TOMプロット

エクスポートネットワーク図

probes = colnames(dat0[,15:69])
dimnames(TOM) <- list(probes, probes)
# Export the network into edge and node list files Cytoscape can read
cyt = exportNetworkToCytoscape(TOM,
             edgeFile = "edges.txt", nodeFile = "nodes.txt", weighted = TRUE, threshold = 0, nodeNames = probes, nodeAttr = dataOne_net$colors) 

リファレンスセクション:

http://blog.sciencenet.cn/blog-118204-1111379.html

https://www.jianshu.com/p/94b11358b3f3



著者:LeoinUSAの
リンクします。https://www.jianshu.com/p/fe4d3c77786eの
出典:ジェーン・ブック
著者によって予約ジェーンブックの著作権、いかなる形で再現され、承認を得るために、作者に連絡して、ソースを明記してください。

おすすめ

転載: www.cnblogs.com/wangshicheng/p/11121537.html