今天写了个函数,批量计算表达矩阵两个基因之间的相关性,安装这个小R包即可使用:
if(!require(tinyarray))devtools::install_github("xjsun1221/tinyarray")
exp = matrix(abs(rnorm(100*9)),100,9)
rownames(exp) = paste0("gene",1:100)
colnames(exp) = paste0("sample",1:9)
x = cor.full(t(exp))
head(x)
# p.value cor
# gene1:gene2 0.6955068 -0.1523859
# gene1:gene3 0.2312251 0.4439933
# gene1:gene4 0.3569791 0.3492115
# gene1:gene5 0.6608321 0.1705702
# gene1:gene6 0.3679726 -0.3417962
# gene1:gene7 0.5823323 0.2129008
行名是两个基因名,第一列是p值,第二列是相关系数。这个示例矩阵有100行,计算的结果有4950行。有多少种排列组合 就会计算多少次。所以矩阵很大时,可能需要的计算时间较长。
可以将相关系数最大的基因选出来画个图
dat=data.frame(x=exp["gene49",],
y=exp["gene56",])
library(ggpubr)
sp1 <- ggscatter(dat, x = "x", y = "y",
add = "reg.line", # Add regressin line
add.params = list(color = "blue", fill = "lightgray"), # Customize reg. line
conf.int = TRUE # Add confidence interval
) + stat_cor(method = "pearson")
sp1
网友评论