WGCNA实战练习

本文详细介绍了WGCNA在基因共表达网络分析中的应用,包括数据预处理、构建网络、识别modules、筛选相关模块及关键基因,以及数据导出与网络图绘制。通过对小鼠芯片表达谱数据的实例分析,展示了WGCNA在生物信息学研究中的具体操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎关注微信公众号《生信修炼手册》!

本文采用WGCNA官网的Tutirial 1的数据,对加权基因共表达网络分析和后续的数据挖掘的具体操作进行梳理
在这里插入图片描述
整个分析流程可以分为以下几个步骤

1. 数据预处理

这部分内容包括以下4个部分

  • 读取基因表达量数据
  • 对样本和基因进行过滤
  • 读取样本表型数据
  • 可视化样本聚类树和表型数据

官方的示例数据是一个小鼠的芯片表达谱数据,包含了135个雌性小鼠的数据,在提供的表达谱数据中,除了探针ID和样本表达量之外,还有额外的探针注释信息,在读取原始数据时,需要把多余注释信息去除,代码如下

# 读取文件
options(stringsAsFactors = FALSE)
femData = read.csv("LiverFemale3600.csv")

# 去除多余的注释信息列
datExpr0 = as.data.frame(t(femData[, -c(1:8)]))
names(datExpr0) = femData$substanceBXH
rownames(datExpr0) = names(femData)[-c(1:8)]

对于基因的表达量数据,需要进行过滤,对于基因而言,可以过滤缺失值或者低表达的基因,对于样本而言,如果该样本中基因缺失值很多,也需要过滤,WGCNA内置了一个检验基因和样本的函数,通过该函数可以进行一个基本过滤,代码如下

gsg = goodSamplesGenes(datExpr0)
if (!gsg$allOK) {
datExpr0 = datExpr0[gsg$goodSamples, gsg$goodGenes]
}

goodSamples和goodGenes就是需要保留的基因和样本。基础过滤之后,还可以看下是否存在离群值的样本,通过样本的聚类树进行判断,代码如下

pdf(file = "sampleClustering.pdf", width = 15, height = 10);
par(cex = 0.6);
plot(sampleTree, 
  main = "Sample clustering to detect outliers", 
  sub="", xlab="", cex.lab = 1.5,
  cex.axis = 1.5, cex.main = 2)
dev.off()

生成的图片如下
在这里插入图片描述
从图上可以看出,F2_221 这个样本和其他样本差距很大,可以将该样本过滤掉。代码如下

clust = cutreeStatic(
  sampleTree,
  cutHeight = 15,
  minSize = 10)

keepSamples = (clust==1)
datExpr = datExpr0[keepSamples, ]
nGenes = ncol(datExpr)
nSamples = nrow(datExpr)

表型数据中也包含了不需要的列,而且其样本比表达谱的样本多,需要根据表达谱的样本提取对应的表型数据,代码如下

# 读取文件
traitData = read.csv("ClinicalTraits.csv")

# 删除多余的列
allTraits = traitData[, -c(31, 16)]
allTraits = allTraits[, c(2, 11:36) ]

# 报纸和表达谱的样本一致
femaleSamples = rownames(datExpr)
traitRows = match(femaleSamples, allTraits$Mice)
datTraits = allTraits[traitRows, -1]
rownames(datTraits) = allTraits[traitRows, 1]

表达谱数据和表型数据准备好之后,可以绘制样本聚类树和表型的热图,代码如下

# 由于去除了样本,重新对剩余样本聚类
sampleTree2 = hclust(dist(datExpr), method = "average")

traitColors = numbers2colors(datTraits, signed = FALSE)

plotDendroAndColors(
  sampleTree2,
  traitColors,
  groupLabels = names(datTraits),
  main = "Sample dendrogram and trait heatmap")
<
<think>好的,我现在需要向用户介绍WGCNA(加权基因共表达网络分析)。首先,我得回忆一下自己对这个方法的了解,确保信息的准确性。WGCNA是一种用于生物信息学的高通量数据分析方法,主要用于基因共表达网络的分析。接下来,我应该先概述它的基本概念,然后逐步讲解其原理、步骤和应用场景,最后可能提到优缺点以及相关工具。 首先,用户可能想知道WGCNA的全称和基本用途。因此,我应该先解释WGCNA代表什么,并简要说明它的主要目的,比如识别基因模块、关联模块与表型数据等。然后,需要分步骤介绍分析流程,比如数据预处理、网络构建、模块识别、模块与性状关联分析以及关键基因识别等部分。每个步骤需要详细一些,但保持简洁,避免技术术语过多。 同时,用户可能对WGCNA的原理感兴趣,比如加权相关网络的概念,软阈值的选取,以及拓扑重叠测度的意义。这里需要解释清楚这些概念,比如软阈值如何帮助强化强相关、削弱弱相关,以及TOM如何衡量基因之间的相似性。 应用场景方面,可以提到它在复杂疾病研究中的应用,如癌症、神经退行性疾病,以及多组学数据整合。这部分需要具体例子,帮助用户理解其实际用途。 还要注意提到常用的工具,比如R的WGCNA包,以及优点如处理大数据、识别功能模块的能力,缺点如计算量大、需要生物知识解释结果等。 在组织内容时,要确保符合用户给出的格式要求:行内数学公式用$...$,独立公式用$$...$$,并且正确使用LaTeX语法。例如,提到软阈值选择时,可能需要公式说明幂律转换,比如$a_{ij} = |\text{cor}(x_i, x_j)|^\beta$,这样的公式需要用正确的LaTeX表达,并放在独立公式块中。 需要检查是否所有数学表达式都正确使用$或$$包裹,例如基因表达矩阵可能用$X$表示,相关性的计算如$\text{cor}(x_i, x_j)$需要用行内公式。拓扑重叠测度的公式可能需要独立成行,比如使用$$...$$。 另外,要使用中文回答,保持结构清晰,分点讲解,但用户要求的是连贯的文本,而不是分点列表。所以需要将步骤、原理等用段落形式组织,可能用标题或加粗来区分各部分,但用户提供的示例中并没有使用Markdown格式,所以可能需要自然过渡。 最后,确保语言通顺,技术术语解释清楚,帮助用户逐步理解WGCNA的各个方面。同时,避免错误,比如混淆相关概念,或提供不准确的信息。可能需要回想WGCNA的原始论文或权威资料中的描述,确保正确性。 总结下来,回答的结构应该是:定义和用途、分析步骤、关键原理、应用场景、工具与优缺点。每个部分简明扼要,重点突出,数学公式正确使用LaTeX,并符合用户的格式要求。</think>WGCNA(加权基因共表达网络分析,Weighted Gene Co-Expression Network Analysis)是一种用于高通量生物数据分析的统计方法,尤其适用于基因表达数据的网络构建和模块识别。其核心思想是通过基因表达的相关性构建加权网络,挖掘基因模块(module)及其与表型或临床特征的关联。以下将逐步介绍其原理、流程和应用。 --- ### 1. **基本概念** WGCNA的核心目标是: - **识别基因模块**:将表达模式高度相关的基因聚类为功能模块。 - **关联模块与表型**:通过模块特征基因(module eigengene)与外部性状(如疾病状态)的相关性,筛选关键模块。 - **挖掘关键基因**:在关键模块中识别枢纽基因(hub gene),即网络中连接度高的基因,可能具有重要生物学意义。 --- ### 2. **分析流程** #### **步骤1:数据预处理** - 输入数据为基因表达矩阵$X$(行为样本,列为基因)。 - 过滤低表达或低变异的基因,例如保留方差排名前$5000$的基因。 #### **步骤2:构建加权共表达网络** - **计算相关性**:计算基因间的相关性矩阵,通常使用皮尔逊相关系数: $$\text{cor}(x_i, x_j) = \frac{\text{cov}(x_i, x_j)}{\sigma_{x_i} \sigma_{x_j}}$$ - **选择软阈值(soft threshold)**:通过幂律转换(power function)将相关性转换为邻接矩阵: $$a_{ij} = |\text{cor}(x_i, x_j)|^\beta$$ 其中$\beta$需满足网络符合无标度拓扑(scale-free topology),通常通过拟合指数$R^2 \geq 0.8$确定。 #### **步骤3:识别基因模块** - **计算拓扑重叠测度(TOM)**:衡量基因间的相似性,考虑间接关联: $$\text{TOM}_{ij} = \frac{\sum_k a_{ik} a_{kj} + a_{ij}}{\min(\sum_k a_{ik}, \sum_k a_{jk}) + 1 - a_{ij}}$$ - **层次聚类与动态剪裁**:基于TOM距离进行聚类,并通过动态树切割划分模块。 #### **步骤4:模块与性状关联分析** - 提取模块特征基因(ME,即模块表达量的第一主成分)。 - 计算ME与表型数据的相关性,筛选显著相关的模块。 #### **步骤5:关键基因分析** - 计算模块内基因的连接度(intramodular connectivity),识别枢纽基因。 - 结合基因功能注释(如GO、KEGG)解析模块的生物学意义。 --- ### 3. **关键原理** - **加权网络**:与传统二值网络(0/1表示关联)不同,WGCNA通过连续权重($a_{ij} \in [0,1]$)保留更多信息。 - **无标度网络**:通过软阈值使网络符合“少数节点连接度高”的特性,增强生物学意义。 - **模块化分析**:将复杂系统分解为功能单元,降低多重检验负担。 --- ### 4. **应用场景** - **复杂疾病机制**:如癌症、阿尔茨海默病中关键通路的发现。 - **多组学整合**:联合基因表达、甲基化、代谢组数据,揭示跨分子层次的调控网络。 - **性状关联分析**:将模块特征与临床指标(如生存期、药物反应)关联。 --- ### 5. **工具与优缺点** - **工具**:主要通过R包`WGCNA`实现。 - **优点**: - 适用于大规模数据,可处理数千基因。 - 模块化的结果便于生物学解释。 - **缺点**: - 计算复杂度高,需高性能计算资源。 - 结果依赖参数(如软阈值),需谨慎验证。 --- ### 6. **示例代码(R语言)** ```r # 安装与加载包 install.packages("WGCNA") library(WGCNA) # 1. 数据预处理 datExpr <- read.csv("gene_expression.csv") goodGenes <- geneFilter(datExpr) datExpr_filtered <- datExpr[, goodGenes] # 2. 选择软阈值 powers <- c(1:20) sft <- pickSoftThreshold(datExpr_filtered, powerVector = powers) beta <- sft$powerEstimate # 推荐β值 # 3. 构建网络与模块识别 net <- blockwiseModules(datExpr_filtered, power = beta, TOMType = "unsigned") # 4. 关联模块与表型 MEs <- net$MEs traitData <- read.csv("phenotype.csv") moduleTraitCor <- cor(MEs, traitData, use = "p") ``` --- ### 7. **总结** WGCNA通过加权网络和模块化分析,帮助研究者从海量基因数据中提取功能单元,并关联表型特征。其核心优势在于整合系统生物学视角,但需结合实验验证和生物知识解释结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值