寫在前面
最近又是忙碌的一米,做不完的手術,收不完的病人,前途堪憂,收入更是不堪入目。??
把之前的WGCNA
教程再補一補吧,之前介紹的是雌性鼠
的表型數據分析,只有一組,相對簡單。??
今天開始我們介紹一下更為復雜的2組
甚至多組
分析。??
用到的包
rm(list = ls())
library(tidyverse)
library(WGCNA)
示例數據
用到的數據是雌性鼠
和雄性鼠
的肝臟表達譜,每個數據集包含大約130+
個樣本。??
femData <- read.csv("./LiverFemale3600.csv")
dim(femData)
maleData <- read.csv("./LiverMale3600.csv")
dim(maleData)
數據整合
我們先把兩個數據集整合在一起,方便后續操作。??
nSets <- 2
setLabels <- c("Female liver", "Male liver")
shortLabels <- c("Female", "Male")
注意一下前面8
列都是一些注釋信息,第9
列開始是表達譜。??
multiExpr <- vector(mode = "list", length = nSets)
multiExpr[[1]] <- list(data = as.data.frame(t(femData[-c(1:8)])))
names(multiExpr[[1]]$data) <- femData$substanceBXH
rownames(multiExpr[[1]]$data) <- names(femData)[-c(1:8)]
multiExpr[[2]] <- list(data = as.data.frame(t(maleData[-c(1:8)])))
names(multiExpr[[2]]$data) <- maleData$substanceBXH
rownames(multiExpr[[2]]$data) <- names(maleData)[-c(1:8)]
檢查一下數據集的格式是否正確吧。??
exprSize <- checkSets(multiExpr)
exprSize
基本數據清理和異常值去除
5.1 去除不好的基因和樣本
我們首先找到缺失樣本數量過多的基因和樣本。??
gsg <- goodSamplesGenesMS(multiExpr, verbose = 3);
gsg$allOK
以下代碼用于去除有問題的基因和樣本,自取吧。??
if (!gsg$allOK)
{
if (sum(!gsg$goodGenes) > 0)
printFlush(paste("Removing genes:", paste(names(multiExpr[[1]]$data)[!gsg$goodGenes],
collapse = ", ")))
for (set in 1:exprSize$nSets)
{
if (sum(!gsg$goodSamples[[set]]))
printFlush(paste("In set", setLabels[set], "removing samples",
paste(rownames(multiExpr[[set]]$data)[!gsg$goodSamples[[set]]], collapse = ", ")))
multiExpr[[set]]$data = multiExpr[[set]]$data[gsg$goodSamples[[set]], gsg$goodGenes];
}
exprSize = checkSets(multiExpr)
}
5.2 樣本聚類
接著我們對每個數據集分別進行cluster
處理。??
sampleTrees = list()
for (set in 1:nSets)
{
sampleTrees[[set]] = hclust(dist(multiExpr[[set]]$data), method = "average")
}
可視化一下吧??
par(mfrow=c(2,1))
par(mar = c(0, 4, 2, 0))
for (set in 1:nSets)
plot(sampleTrees[[set]], main = paste("Sample clustering on all genes in", setLabels[set]),
xlab="", sub="", cex = 0.7)
5.3 去除異常值
可以看出來雌性鼠
數據集中有一個異常值,雄性鼠
數據集中沒有,我們先可視化一下。??
baseHeight <- 16
cutHeights <- c(16, 16*exprSize$nSamples[2]/exprSize$nSamples[1])
par(mfrow=c(2,1))
par(mar = c(0, 4, 2, 0))
for (set in 1:nSets)
{
plot(sampleTrees[[set]], main = paste("Sample clustering on all genes in", setLabels[set]),
xlab="", sub="", cex = 0.7)
abline(h=cutHeights[set], col = "red")
}
OK。我們現在真正的從數據中去除掉它!~??
for (set in 1:nSets)
{
labels = cutreeStatic(sampleTrees[[set]], cutHeight = cutHeights[set])
keep = (labels==1)
multiExpr[[set]]$data = multiExpr[[set]]$data[keep, ]
}
collectGarbage()
確定一下數據集的大小。??
exprSize <- checkSets(multiExpr)
exprSize
載入特征數據
traitData <- read.csv("ClinicalTraits.csv")
dim(traitData)
names(traitData)
去除一下我們不需要的數據。??
allTraits <- traitData[, -c(31, 16)]
allTraits <- allTraits[, c(2, 11:36) ]
dim(allTraits)
names(allTraits)
把traits
成list
的格式來方便后面的應用。??
Traits <- vector(mode="list", length = nSets)
for (set in 1:nSets)
{
setSamples = rownames(multiExpr[[set]]$data)
traitRows = match(setSamples, allTraits$Mice)
Traits[[set]] = list(data = allTraits[traitRows, -1])
rownames(Traits[[set]]$data) = allTraits[traitRows, 1]
}
collectGarbage()
把genes
數和samples
數存起來,后面會用到。??
nGenes <- exprSize$nGenes
nSamples <- exprSize$nSamples
save一下
初步處理完了數據我們就保存一下吧,畢竟辛辛苦苦清理好了數據。??
save(multiExpr, Traits, nGenes, nSamples, setLabels, shortLabels, exprSize,
file = "./Consensus-dataInput.RData")
<center>最后祝大家早日不卷!~</center>
點個在看吧各位~ ?.???? ??? ?
<center> <b>?? 往期精彩 <b> </center>
?? <font size=1>?? WGCNA | 值得你深入學習的生信分析方法!~</font>
?? <font size=1>?? ComplexHeatmap | 顏狗寫的高顏值熱圖代碼!</font>
?? <font size=1>?? ComplexHeatmap | 你的熱圖注釋還擠在一起看不清嗎!?</font>
?? <font size=1>?? Google | 谷歌翻譯崩了我們怎么辦!?(附完美解決方案)</font>
?? <font size=1>?? scRNA-seq | 吐血整理的單細胞入門教程</font>
?? <font size=1>?? NetworkD3 | 讓我們一起畫個動態的桑基圖吧~</font>
?? <font size=1>?? RColorBrewer | 再多的配色也能輕松搞定!~</font>
?? <font size=1>?? rms | 批量完成你的線性回歸</font>
?? <font size=1>?? CMplot | 完美復刻Nature上的曼哈頓圖</font>
?? <font size=1>?? Network | 高顏值動態網絡可視化工具</font>
?? <font size=1>?? boxjitter | 完美復刻Nature上的高顏值統計圖</font>
?? <font size=1>?? linkET | 完美解決ggcor安裝失敗方案(附教程)</font>
?? <font size=1>......</font>
本文由mdnice多平臺發布