RNA-seq分析:Step9(共表达分析)

2023-11-04 06:50
文章标签 分析 seq rna 共表达 step9

本文主要是介绍RNA-seq分析:Step9(共表达分析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前记

一、R包的安装

二、数据的载入和预处理

1、数据导入

2、样本的聚类

 3、软阈值的计算和选择

三、生成基因模块

四、基因模块与表型之间联系

 五、导出共表达网络文件

后记


前记

WGCNA(Weighted Correlation Network Analysis)是一种系统生物学中常用的数据分析方法,主要用于分析高通量基因表达数据。该方法通过构建基因共表达网络,将相似的基因组织到同一模块中,并用模块间的关联性进行分析,从而识别与生物学过程相关的模块和关键基因。

WGCNA分析流程主要包括:数据预处理、构建共表达网络、模块检测、模块注释和功能分析等步骤。其中,构建共表达网络是WGCNA的核心步骤,其基本思想是通过计算基因间的相关系数,建立基因共表达网络,然后利用模块检测算法将相关基因聚类成模块,进而探究不同模块与生物学过程的相关性。最终,可以对模块进行注释和功能分析,揭示其在生物学过程中的作用。

Figure 1
WGCNA的流程

一、R包的安装

WGCNA分析需要用到WGCNA包。WGCNA R包是基于R语言编写的,用于实现WGCNA分析的工具包。该包提供了一系列函数,可用于数据预处理、构建基因共表达网络、模块检测、模块注释和功能分析等步骤。同时,还提供了数据导入和导出、可视化等功能。

WGCNA R包中的主要函数包括:

  • importDataset:用于导入基因表达数据;
  • goodSamplesGenes:用于筛选高质量的样本和基因;
  • pickSoftThreshold:用于选择共表达网络分析中的软阈值;
  • blockwiseModules:用于构建基因共表达网络,并将相关基因聚类成模块;
  • moduleColors:用于将模块标记颜色并可视化;
  • moduleTraitCor:用于计算模块和外部性状的相关性;
  • pathwayAnalysis:用于对模块进行通路分析。

WGCNA R包是一个功能强大的工具,可以快速、高效地进行WGCNA分析。对于想要进行基因表达数据分析的生物学家和生物信息学家来说,是一个非常有价值的工具。

WGCNA: an R package for weighted correlation network analysis | BMC Bioinformatics | Full Text (biomedcentral.com)icon-default.png?t=N7T8https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-9-559#Fig1安装的代码如下:

#载入WGCNA和flashClust
BiocManager::install("impute")
BiocManager::install("preprocessCore")
install.packages("WGCNA")
install.packages("flashClust")
library(WGCNA)
library(flashClust)

二、数据的载入和预处理

1、数据导入

导入的数据包括差异基因的表达量信息和性状信息,代码如下:

#读入表达量数据
fpkm <- read.table("GSE80565_RNAseq_ABAtimeSeries_rpkm_log2FC_FDR_filterCPM2n2.txt", header = TRUE)
rownames(fpkm) <- fpkm$gene_id #设置第一列为列名
fpkm <- fpkm[, - 1] #删除第一列
fpkm <- fpkm[, 1:28] #提取表达量数据
fpkm <- log2(fpkm + 1) #取对数#读入差异表达分析结果
deseq_results <- read.csv("DESeq2_results_significant.csv", row.names = "X", header = TRUE)
SubGeneNames <- as.character(rownames(deseq_results)) #提取差异表达基因名称
datExpr <- fpkm[SubGeneNames, ] #提取差异表达基因表达量数据
datExpr <- na.omit(datExpr) #去除NA值
datExpr <- as.data.frame(t(datExpr)) #颠换行和列#检查是否存在异常值
gsg <- goodSamplesGenes(datExpr, verbose = 3)
gsg$allOK#读入表型数据
datTraits <- read.table("traits_wgcna.txt")
#datTraits <- datTraits[1:14, ]
table(rownames(datTraits) == rownames(datExpr))

2、样本的聚类

#根据表达量对样本进行聚类
A <- adjacency(t(datExpr), type = "signed")
k <- as.numeric(apply(A, 2, sum)) - 1
Z.k <- scale(k)
thresholdZ.k <- - 2.5
outlierColor <- ifelse(Z.k < thresholdZ.k, "red", "black")
sampleTree <- flashClust(as.dist(1 - A), method = "average")#样本聚类树(red indicates high values)
traitColors <- data.frame(numbers2colors(datTraits, signed = FALSE))
dimnames(traitColors)[[2]] <- paste(names(datTraits))
datColors <- data.frame(outlier = outlierColor, traitColors)
plotDendroAndColors(sampleTree, groupLabels = names(datColors), colors = datColors, main = "Sample Dendrogram and Trait Heatmap")
样本表型聚类结果

 3、软阈值的计算和选择

在WGCNA分析中,软阈值是选择共表达基因模块时最为关键的参数之一。软阈值是将基因表达数据矩阵中每个基因与其它基因的相关性系数的绝对值进行幂指数化,以使得相关性系数呈现幂律分布。这个幂指数化参数就是软阈值。软阈值越大,相似性系数低的基因对会被更加压抑,而相似性系数高的基因对则会被更加放大,这样可以使得基因之间的相关性更加明显。

WGCNA通常会构建一个基因相关系数矩阵,该矩阵可以通过计算基因间的Pearson相关系数、Spearman相关系数或其他相关系数来获得。然后思考如何将这些基因聚集成基因模块,通常情况下,会使用类似于层次聚类的方法将相似的基因聚集在一起,并根据特定的指标为每个模块分配一个标记,这个过程称为分组。

选择适当的软阈值对于分组结果的准确性和稳定性至关重要。通常可以使用WGCNA软件中自带的函数“pickSoftThreshold”来自动计算软阈值,该函数会根据基因表达数据的特性自动选择最佳的软阈值。当然,也可以手动调整软阈值,观察不同软阈值对模块划分影响的变化,找到一个合适的软阈值。

#选择恰当的幂次
powers <- c(c(1:10), seq(from = 12, to = 60, by = 2))
sft <- pickSoftThreshold(datExpr, dataIsExpr = TRUE, powerVector = powers, corFnc = cor, corOptions = list(use = 'p'), networkType = "signed")#Plot softPower results
par(mfrow = c(1, 2))
cex1 = 0.9#Scale-free topology fit index as a function of the soft-thresholding power
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.80,col = "red")#Mean connectivity as a function of the soft-thresholding power
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")
软阈值计算结果

补充1:

作为软阈值功率函数的无标度拓扑拟合指数指的是一种网络拓扑的度量方式,用于衡量一个网络的无标度性质,即网络中节点的度数分布服从幂律分布。该指数采用软阈值函数对幂律分布进行拟合,从而得到能够描述网络无标度性质的指数。具体来说,软阈值函数在拟合幂律分布时可以减少高度不可靠的极端值的影响,提高模型拟合的准确性。因此,使用软阈值功率函数作为拟合函数的无标度拓扑拟合指数可以更准确地描述网络的无标度性质。

补充2:

无标度拓扑拟合指数(又称无标度网络指数或无标度拓扑标准)是用于评估网络是否遵循无标度拓扑的一种度量方法,无标度拓扑的特点是有少数高度连接的节点(枢纽)和许多稀疏连接的节点。该指数通过将网络的度分布拟合为幂律分布来计算。

软阈值功率是一个参数,用于根据基因表达数据集构建加权邻接矩阵。该参数用于确定基因间相关性的强度,并过滤掉可能与生物无关的较弱相关性。

随着软阈值处理能力的变化,生成的网络可能会表现出不同程度的无标度性。因此,作为软阈值功率函数的无标度拓扑拟合指数,可以评估在不同强度阈值下,所得到的网络与无标度拓扑的吻合程度。这一点非常重要,因为不同的生物系统可能有不同程度的无标度,了解特定数据集的最佳阈值可以提高基因共表达网络分析等下游分析的准确性。

三、生成基因模块

WGCNA(Weighted Gene Co-Expression Network Analysis)是一种用于分析基因共表达网络的方法,它能够将大量的基因数据转化为共表达模块,从而为后续分析提供便捷。以下是WGCNA分析生成基因模块的简述:

  1. 数据预处理:首先需要进行数据预处理,包括基因表达数据质控、归一化、去除批次效应等步骤。

  2. 构建共表达网络:通过计算基因之间的相关性,构建基因共表达网络。可以使用Pearson相关系数、Spearman相关系数等方法来计算基因之间的相关性。

  3. 模块划分:将基因按照其相似性聚类成若干个模块。可以使用层次聚类、动态树切割等算法来实现。

  4. 模块注释:对每个模块进行注释,可以使用基因富集分析等方法,了解每个模块所代表的生物学功能和通路。

  5. 模块与表型关联:将每个模块的表达量与不同表型数据进行相关分析,找到与表型显著相关的模块。

  6. 模块提取:最终选取与表型显著相关的模块,得到这些模块中包含的基因列表,这些基因就可以作为后续分析的重要基础。

    enableWGCNAThreads()
    softPower <- 56
    adjacency <- adjacency(datExpr, power = softPower, type = "signed")#生成TOM矩阵,计算相异性
    TOM <- TOMsimilarity(adjacency, TOMType = "signed")
    dissTOM <- 1 - TOM#基因聚类树
    geneTree <- flashClust(as.dist(dissTOM), method = "average")
    par(mfrow = c(1, 1))
    plot(geneTree, xlab = "", sub = "", main = "Gene Clustering on TOM-based dissimilarity", labels = FALSE, hang = 0.04)minModuleSize <- 15 #设置模块至少包含的基因数dynamicMods <- cutreeDynamic(dendro = geneTree, distM = dissTOM, deepSplit = 2, pamRespectsDendro = FALSE, minClusterSize = minModuleSize)
    dynamicColors <- labels2colors(dynamicMods)
    MEList <- moduleEigengenes(datExpr, colors = dynamicColors, softPower = softPower)
    MEs <- MEList$eigengenes
    MEDiss <- 1 - cor(MEs)
    METree <- flashClust(as.dist(MEDiss), method = "average")#模块聚类树
    plot(METree, main = "Clustering of module eigengenes", xlab = "", sub = "")
    #设置合并模块阈值
    MEDissThres <- 0.00 #not to merge
    merge <- mergeCloseModules(datExpr, dynamicColors, cutHeight = MEDissThres, verbose = 3)
    mergedColors <- merge$colors
    mergedMEs <- merge$newMEs#基因聚类树以及模块划分
    plotDendroAndColors(geneTree, cbind(dynamicColors, mergedColors), c("Dynamic tree cut", "Merged dynamic"), dendroLabels = FALSE, hang = 0.03, addGuide = TRUE, guideHang = 0.05)
    moduleColors <- mergedColors
    colorOrder <- c("grey", standardColors(50))
    moduleLabels <- match(moduleColors, colorOrder) - 1
    MEs <- mergedMEs#模块间基因连通性值计算并排序
    allDegrees <- intramodularConnectivity(adjacency, dynamicColors)
    allDegrees <- allDegrees[order(allDegrees$kTotal), ]
    allDegrees <- data.frame(GeneID = rownames(allDegrees), allDegrees)
    write.table(allDegrees, "degrees.txt", sep = "\t", quote = FALSE, row.names = FALSE)#提取模块基因,输出至文件
    module_colors = setdiff(unique(dynamicColors), "grey")
    for(color in module_colors){module_genes = SubGeneNames[which(dynamicColors == color)]write.table(module_genes, paste("module_", color, ".txt", sep=""), sep="\t", row.names=FALSE, col.names=FALSE, quote=FALSE)
    }#TOM图
    #set the diagonal of the dissimilarity to NA 
    diag(dissTOM) = NA;
    #Visualize the Tom plot. Raise the dissimilarity matrix to a power  to bring out the module structure
    sizeGrWindow(7,7)
    TOMplot(dissTOM^4, geneTree, as.character(dynamicColors))
    
TOM图绘制结果

WGCNA(Weighted Gene Co-Expression Network Analysis)是一种常用的基因共表达网络分析方法,TOM(Topological Overlap Matrix)图是WGCNA分析中最常见和重要的图表之一。下面是解读WGCNA分析中TOM图的一般步骤:

1. TOM图是什么?TOM图是基于WGCNA分析构建的基因共表达网络图,它显示了基因和基因之间的“拓扑重叠”程度,即基因之间的相似性或连接强度。

2. TOM图如何解读?TOM图通常包含两个关键参数:基因列表和TOM值。基因列表是标识网络中每个节点(基因)的唯一标识符,TOM值表示“拓扑重叠”程度,数值越高表示基因之间的相似性或连接越强。

3. 颜色模块:为了更好地表示基因之间的相似性和连接强度,通常将TOM值相近的基因进行聚类,形成不同的颜色模块。这些颜色模块可以反映出共表达基因的生物学功能和通路。

4. 颜色条:颜色条是显示每个基因在不同颜色模块中的位置的横向条形图,颜色条越长表示该基因被聚类在多个模块中的概率越高。

5. 热图:为了更方便地查看基因之间的连接程度,通常会使用热图展示基因与基因之间的TOM值,颜色越深表示TOM值越大,即连接越强。

综上,通过解读TOM图可以了解到基因共表达网络中基因之间的相似性和连接强度,以及不同颜色模块所代表的生物学功能和通路。

四、基因模块与表型之间联系

WGCNA(Weighted Gene Co-expression Network Analysis)是一种常用于分析基因表达数据的方法,它可以通过构建基因共表达网络来鉴定与疾病相关的基因模块,并探索这些基因模块与表型的关联性。在WGCNA分析中,基因模块通常被定义为具有高度相关性的基因组成的子集,这些基因模块可以反映生物学过程或预测某些重要的表型。

对于基因模块与表型之间的联系,可以通过计算模块特异性的基因表达量和表型数据之间的相关性来进行评估。这种关联性分析可以帮助我们发现哪些基因模块与表型有关,从而更好地理解基因组学与表型之间的联系。同时,WGCNA还可以通过对基因模块进行富集分析,来鉴定这些模块与特定生物学过程或疾病有关的基因,并提供更深入的生物学信息。

总之,WGCNA分析可以帮助我们鉴定基因模块,并探索这些模块与表型之间的联系,从而提高我们对基因组学与表型之间关系的了解。

#Define number of gengs and samples
nGenes <- ncol(datExpr)
nSamples <- nrow(datExpr)#Recalculate MEs with color labels
MEs0 <- moduleEigengenes(datExpr, moduleColors)$eigengenes
MEs <- orderMEs(MEs0)
moduleTraitCor <- cor(MEs, datTraits, use = 'p')
moduleTraitPvalue <- corPvalueStudent(moduleTraitCor, nSamples)#Print correlation heatmap between modules and traits
textMatrix <- paste(signif(moduleTraitCor, 2), "\n(", signif(moduleTraitPvalue, 1), ")", sep = "")
dim(textMatrix) <- dim(moduleTraitCor)#Display the correlation value with a heatmap plot
sizeGrWindow(12, 9)
par(mar = c(6, 8.5, 3, 3))
labeledHeatmap(Matrix = moduleTraitCor,xLabels = names(datTraits),yLabels = names(MEs),ySymbols = names(MEs),colorLabels = FALSE,colors = blueWhiteRed(50),textMatrix = textMatrix,setStdMargins = FALSE,cex.text = 0.5,zlim = c(-1, 1),main = paste("Module-trait relationships"))

 五、导出共表达网络文件

共表达网络文件是指包含基因表达数据的格式化文件,以及通过这些数据构建的基因共表达网络。在WGCNA分析中,共表达网络文件通常包含两部分内容:

  1. 基因表达数据:基因表达数据是指在不同生理条件下的基因表达水平,通常以矩阵的形式呈现。基因表达数据可以通过RNA测序或基因芯片技术获得。其中,行表示基因,列表示不同的样本,每个元素表示该基因在该样本中的表达水平。

  2. 权重矩阵:权重矩阵是通过基因表达数据计算得到的共表达网络矩阵。该矩阵中的元素表示两个基因之间的相似性,通常以Pearson相关系数或Spearman相关系数的值表示。共表达网络的构建需要对基因表达数据进行预处理(例如,去除批次效应、标准化等),并调整参数(例如,软阈值)以得到较好的共表达模块。

共表达网络文件可以使用多种方式进行可视化和分析,例如通过Cytoscape软件进行网络可视化,或使用R语言中的WGCNA包进行模块鉴定和生物学意义富集分析等。这些分析可以帮助我们理解基因共表达网络中的生物学意义,从而为生物学研究提供更深入的信息和启示。

modules <- setdiff(unique(dynamicColors), "grey")
genes <- names(datExpr)
inModule <- is.finite(match(moduleColors, modules))
modProbes <- genes[inModule]
modGenes <- genes[inModule]
modTOM <- TOM[inModule, inModule]
dimnames(modTOM) <- list(modGenes, modGenes)cyt = exportNetworkToCytoscape(modTOM,edgeFile = paste("CytoscapeInput-edges-", paste(modules, collapse="-"), ".txt", sep=""),nodeFile = paste("CytoscapeInput-nodes-", paste(modules, collapse="-"), ".txt", sep=""),weighted = TRUE,threshold = 0.35,nodeNames = modProbes,altNodeNames = modGenes,nodeAttr = moduleColors[inModule])

后记

本文使用的数据和参考文献的链接如下:

GEO Accession viewer (nih.gov)icon-default.png?t=N7T8https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE80565http://science.sciencemag.org/content/354/6312/aag1550icon-default.png?t=N7T8http://science.sciencemag.org/content/354/6312/aag1550

补充:

没有表型数据如何进行WGCNA分析?

WGCNA分析是专门针对基因表达谱数据的共表达网络分析方法,需要输入基因表达矩阵和与之对应的表型数据才能进行。表型数据包括每个样本的性状信息,例如疾病状态、年龄、性别等。

如果没有表型数据,可以考虑以下两种方法:

1. 使用外部数据合并:如果在其他研究中已经有合适的表型数据和相似的基因表达谱数据,可以将其合并,然后进行WGCNA分析。这种方法可以增加分析的样本数量,提高分析结果的可靠性和准确性。

2. 聚类分析:如果没有表型数据,也可以先进行聚类分析,将相似的样本归为同一组,然后对这些组进行WGCNA分析。这种方法需要注意聚类结果的可靠性和合理性,避免样本误分类导致结果不准确。

总之,无论采用哪种方法,都需要谨慎地处理数据,保证分析结果的可靠性和准确性。

后续会讲述如何使用Cytoscape软件进行网络可视化。

2023.8.30

----CXGG

这篇关于RNA-seq分析:Step9(共表达分析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/343989

相关文章

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据