🤠 WGCNA | 不止一个组的WGCNA怎么分析嘞!?~(一)(共识网络分析-第一步-数据整理)

写在前面

最近又是忙碌的一米,做不完的手术,收不完的病人,前途堪忧,收入更是不堪入目。🥲

把之前的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)

traitslist的格式来方便后面的应用。😉

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多平台发布

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容