Similarity Network Fusion (SNF)是将多组学数据整合起来,优化可视化结果的一种方法。如下面将两种数据类型融合在一起的:同一组患者的mRNA表达和DNA甲基化。
安装:
if (packageVersion("devtools") < 1.6) {
install.packages("devtools")
}
devtools::install_github("maxconway/SNFtool")
library(SNFtool)
data(Data1) # gene expression
data(Data2) # methylation
计算两个数据的距离矩阵
dist1 <- as.matrix(dist(Data1))
dist2 <- as.matrix(dist(Data2))
将距离矩阵转化成相似矩阵,在距离矩阵中,值越大代表越远,相似矩阵中,值越大代表越相似,转化所用的函数为affinityMatirix。afinityMatrix输入为三个参数:一个已经存在的距离矩阵,参数K和sigma。 K是相邻的数量,其中相邻外部的亲和力设置为零,内部的亲和力被归一化。 sigma是用于执行实际亲和力计算的缩放指数相似内核的超参数。 这两个参数都是凭经验选择的。
W1 <- affinityMatrix(dist1, K = 20, sigma = 0.5)
W2 <- affinityMatrix(dist2, K = 20, sigma = 0.5)
将聚类用热图可视化
displayClustersWithHeatmap(W1, spectralClustering(W1, K = 3))
image.png
displayClustersWithHeatmap(W2, spectralClustering(W2, K = 3))
image.png
将两个数据整合并可视化
W = SNF(list(W1,W2), 20, 20)
displayClustersWithHeatmap(W, spectralClustering(W, K = 3))
image.png
显然,数据整合之后的相关效果更好!
参考:
https://github.com/maxconway/SNFtool
https://arxiv.org/pdf/1708.07136.pdf
欢迎关注微信公众号:生信编程日常
网友评论