在处理和未处理的两种情况下,我有 200 个基因的表达值 (log2),并且对于每种情况,我有 20 个重复。我想计算每个基因的每个条件之间的相关性,并将它们从高到低排序。
这更像是一个生物统计问题,但我仍然认为这对生物学家/生物程序员来说是一个重要的问题,我们中的许多人都会遇到这个问题。
数据集如下所示:
Gene UT1 UT2 T1 T2
DDR1 8.111795978 7.7606511867 7.9362235824 7.5974674936
RFC2 10.2418824097 9.7752152714 10.0085488406 9.5723427524
HSPA6 6.5850239731 6.7916563534 6.6883401632 7.3659252344
PAX8 9.2965160827 9.2031177653 9.249816924 8.667772504
GUCA1A 5.4828021059 5.3797749957 5.4312885508 5.1297319374
我在样本数据中只显示了每个样本的两个重复。
我正在寻找 R 或 Python 中的解决方案。 R 中的 cor 函数没有给我想要的东西。
请您参考如下方法:
如果我从你的问题中理解正确,你需要计算所有基因的 UT1 和 T1 以及 UT2 和 T2 之间的相关性。 在 R 中有一种方法可以做到这一点:
df <- data.frame(Gene = c("DDR1","RFC2","HSPA6","PAX8","GUCA1A")
, UT1 = c(8.111796, 10.241882, 6.585024 , 9.296516 , 5.482802),
UT2 =c( 7.760651 ,9.775215 ,6.791656, 9.203118, 5.379775),
T1 =c(7.936224 ,10.008549, 6.688340 , 9.249817 , 5.431289),
T2 =c(7.597467 ,9.572343 ,7.365925 ,8.667773 ,5.129732))
制作这样的矩阵:
mat1 <- cbind(file$UT1,file$T1)
初始化相关矩阵:
cor1 <- matrix(0,length(file$Gene),length(file$Gene))
然后像这样计算与所有基因的相关性:
for(i in 1:length(df$Gene)) cor1[i,] = apply(mat1,1,function(x) cor(x,mat1[df$Gene[i],]))
希望对您有所帮助。
