基因表达相关性可视化—弦图(R语言)
卖萌控的博客
点击这里进入电脑版页面!体验更好
基因表达相关性可视化—弦图(R语言)
2023-3-1 萌小白


表达谱分析中,经常会使用到相关性分析,探索一组基因间的共表达特征。例如,这些基因间的表达是否存在较强的协同性,一个基因表达值的改变是否与另一个基因表达值改变显著相关,它们之间是共激活还是抑制关系等。



对于相关性分析结果的可视化,通常有多种方法,例如相关性散点图、弦图、共表达网络图。本篇教程则主要带大家了解如何基于基因表达值的相关性,绘制弦图。



如下弦图来自文献“CUL4B promotes prostate cancer progression by forming positive feedback loop with SOX4”,共涉及了7个基因。图中的连线就代表了基因间表达值的相关性信息,红色代表正相关,绿色代表负相关,颜色越深或连线越粗代表相关强度越高。从图中可以看出,这几个基因间以较强的正相关关系占主导,暗示它们之间的共激活关系,或者在相似的生物学过程中发挥作用。



文献中的弦图,表示基因间表达值的相关性



接下来,我们模仿文献中的图片样式,绘制基因表达相关性弦图。



作图原始数据、R代码等,可关注微信公众号获取。



1.计算基因表达值的相关性



为了绘制弦图,首先需要计算基因表达值的相关性。



来看提供的示例数据“gene_FPKM.txt”,记录了6个基因在30个样本中的表达值(FPKM值)信息。将该基因表达值矩阵读入到R中,计算基因表达值的Pearson相关性。



示例数据格式



!!!**************************************************



#读取基因表达值数据



gene <- read.delim('gene_FPKM.txt', row.names = 1, sep = '\t')



gene <- t(gene) #转置数据,使行为样本,列为基因



#表达值进行log(1+)转化,使数据更服从正态分布,减少离散度极大值影响



gene <- log(gene+1)



#基因表达值的相关性分析,以Pearson相关系数为例



gene_cor <- cor(gene, method = 'pearson')



#去除基因的自相关,也就是对角线的值



diag(gene_cor) <- 0



gene_cor #最终的基因间表达值Pearson相关性矩阵



!!!**************************************************



计算基因间表达值的相关性



初步计算了6个基因间表达值的Pearson相关系数,正值代表正相关,负值代表负相关,绝对值越大代表相关强度越高。



2.绘制相关性弦图



再对上述得到的相关性矩阵做个转换,得到一种两两对应的结构,如下示例。



!!!**************************************************



#将获得的相关性矩阵转换为两两对应的数据框结构



gene_cor <- reshape2::melt(gene_cor)



gene_cor <- subset(gene_cor, value != 0) #去除0值的相关性



head(gene_cor) #前两列是两个基因名称,第三列为两个基因的相关性



!!!**************************************************



基因间两两相关性



最后,可通过circlize包中的方法绘制弦图,circlize包是R语言中绘制弦图的一款非常优秀的R包。



!!!**************************************************



#绘制弦图



library(circlize)



chordDiagram(gene_cor,



annotationTrack = c('grid', 'name', 'axis'), #绘制外周圆弧区,显示名称和刻度轴



grid.col = c(GABRD = 'green3', PLVAP = 'red', CDKN3 = 'orange', CDC25C = 'purple', UBE2T = 'skyblue', SKA1 = 'blue'), #定义基因颜色



col = colorRamp2(c(-1, 0, 1), c('green', 'white', 'red'), transparency = 0.5), #根据相关性大小展示连线的颜色范围



annotationTrackHeight = c(0.05, 0.05), #名称离圆弧的距离,以及圆弧的宽度



!!!**************************************************



R包circlize绘制的弦图



这样弦图就得到了,连线表示了6个基因间表达值的Pearson相关性信息,红色代表正相关,绿色代表负相关,颜色越深或连线越粗代表相关强度越高。












注:!!!*******之间为R脚本内容



发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容