Python 从距离矩阵计算亲和矩阵

Python 从距离矩阵计算亲和矩阵,python,bioinformatics,affinity,Python,Bioinformatics,Affinity,我用clustal omega得到了500个蛋白质序列的距离矩阵(它们彼此同源) 我想使用亲和传播对这些序列进行聚类 最初,因为我用手观察到距离矩阵只有0到1之间的值,0距离=100%恒等式,所以我推断我可以用(1-距离)来获得亲和性 我运行了我的代码,集群看起来很合理,我认为一切都很好。。。在我读到这篇文章之前,亲和矩阵通常是通过应用“热核”从距离矩阵计算出来的。就在那时,所有的地狱在我的脑海里爆发 我是否认为亲和矩阵的概念不正确?有没有计算亲和矩阵的简单方法?scikit学习提供以下公式:

我用clustal omega得到了500个蛋白质序列的距离矩阵(它们彼此同源)

我想使用亲和传播对这些序列进行聚类

最初,因为我用手观察到距离矩阵只有0到1之间的值,0距离=100%恒等式,所以我推断我可以用
(1-距离)
来获得亲和性

我运行了我的代码,集群看起来很合理,我认为一切都很好。。。在我读到这篇文章之前,亲和矩阵通常是通过应用“热核”从距离矩阵计算出来的。就在那时,所有的地狱在我的脑海里爆发

我是否认为亲和矩阵的概念不正确?有没有计算亲和矩阵的简单方法?scikit学习提供以下公式:

similarity = np.exp(-beta * distance / distance.std())
但是什么是beta?我知道距离。std()是距离的标准偏差

我现在对所涉及的概念(与实际的编码实现相反)感到困惑和迷茫,因此非常感谢您的帮助


顺便说一句,我试着在Biostars.org上发帖,但我没有得到答案…

我认为1-distance和exp(-beta*distance)都是将距离转换为相似性的有效方法(尽管它们在概率框架中的解释不同)。我只想使用能提供更好结果的代码。

具体来说,代码来自哪里?代码来自此页面:这很有帮助,@Michaelhofman!我试图理解beta的价值。当beta=1时接近voronoi…-你对此有何理解?从一个不太正式的角度来看,任何距离度量都可以通过单调递减映射转换为相似性度量。负指数映射$e^{(-b*distance)/std(distance)}$对于任何正beta都是单调递减的,所以我想作者只是为了完整性才包含它。至少这是我的解释。