我试图创建一个成对的相似度矩阵,在该矩阵中,我使用R包HPOSim的“ getSimWang”功能将每个HPO项与每个其他HPO项的相似性进行比较。可在此处获取软件包:https://sourceforge.net/projects/hposim/
我可以使用以下方法为HPO项的子集(约13,000个)创建成对相似性矩阵:
list1<-c("HP:0002404","HP:0011933","HP:0030286")
custom <- function(x,y){
z <- getSimWang(x,y)
return(z)
}
outer(list1, list1, Vectorize(custom))
[,1] [,2] [,3]
[1,] 1.0000000 0.6939484 0
[2,] 0.6939484 1.0000000 0
[3,] 0.0000000 0.0000000 1
sapply(list1, function(x) sapply(list1, function(y) custom(x,y)))
HP:0002404 HP:0011933 HP:0030286
HP:0002404 1.0000000 0.6939484 0
HP:0011933 0.6939484 1.0000000 0
HP:0030286 0.0000000 0.0000000 1
但是,当我尝试扩展此代码以将其应用于其余HPO术语时,R进行了24小时的计算,而当我使用pbsapply估计所需的时间时,估计为20 < strong> 天 !
我也尝试过mapply-但这只是给我一部分计算(x1y1,x2y2和x3y3),而不是所有组合(x1y1,x1y2,x1y3等)。
mapply(custom, list1, list1)
HP:0002404 HP:0011933 HP:0030286
1 1 1
还有xapply解决方案here,但是当我运行该解决方案时,我丢失了要比较哪些术语的信息:
xapply(FUN = custom, list1, list1)
[[1]]
[1] 1
[[2]]
[1] 0.6939484
[[3]]
[1] 0
[[4]]
[1] 0.6939484
[[5]]
[1] 1
[[6]]
[1] 0
[[7]]
[1] 0
[[8]]
[1] 0
[[9]]
[1] 1
我是否缺少一种不同的方法来获取相似度的成对计算(或理想情况下为非冗余成对计算)?还是真的需要20天?!?