Skip to main content
 首页 » 编程设计

python之两个样本与重复的相关性

2025年05月04日12Terrylee

在处理和未处理的两种情况下,我有 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],])) 

希望对您有所帮助。