数学推导与算法
本节把邻近度、分离度写成可执行的算法,说明度匹配抽样的细节与复杂度,并给出 DIAMOnD 的伪代码和基于扩散的替代方法——带重启的随机游走(RWR)与热核。符号:相互作用组 ,,; 为最短路径长度; 为疾病基因集合, 为药物靶点集合; 为节点度。
最近距离 与度匹配 分数
有一个计算上的便利: 对所有 可以用一次多源广度优先搜索(把 中所有节点同时作为起点、距离设为 0)得到,代价 ,不需要计算全体节点对的距离。注意 不对称:它对靶点求平均,衡量“每个靶点离疾病模块多远”。
算法 1 网络邻近度 z 分数(Guney 等, 2016 思路)
输入:G;疾病基因 S;靶点 T;随机次数 B(如 1000);分箱最小容量 b(例如约 100 个节点)
输出:d_c、z 分数、经验 p 值
1. S, T ← 只保留位于 G 最大连通分支中的节点(报告丢弃了多少)
2. 度分箱:把节点按度升序排列,依次装箱,每箱至少 b 个节点(高度端的箱会跨越较宽的度范围)
3. dist ← 以 S 为源的多源 BFS;d_obs ← mean_{t∈T} dist[t]
4. 对 i = 1..B:
5. S' ← 对 S 中每个节点,从其所在度箱中无放回随机抽一个替身
6. T' ← 对 T 同样处理
7. dist' ← 以 S' 为源的多源 BFS;d_i ← mean_{t∈T'} dist'[t]
8. μ, σ ← d_1..d_B 的均值与标准差
9. z ← (d_obs − μ)/σ;p ← (1 + #{d_i ≤ d_obs}) / (B + 1)
复杂度:O(B·(N+M));对 1.3 万节点、14 万边的互作组,B=1000 时在普通电脑上可接受
为什么必须分箱抽样?最短路径长度强烈依赖度:高度节点到任意节点的平均距离更短。如果 中多为枢纽而随机替身均匀抽取,替身的度偏低、距离偏长, 就会系统性地偏负,产生“药物特异地靠近疾病”的假象。分箱是一种折中:箱太细则替身选择太少、随机性不足;箱太粗则度匹配不准。
分数的含义依赖零分布近似正态。距离是小整数, 的零分布可能离散、偏斜,尤其当 只有 1–2 个靶点时。此时应以经验 值为主,并对大量药物–疾病对做多重比较校正。还要注意,靶点本身就是疾病基因时贡献的距离为 0, 很小时 对这类重叠极其敏感。
分离度 的计算与含义
按 Menche 等(2015)的定义:
对 、 对称,共有基因的距离为 0。可以这样理解 的符号:若 、 是同一个模块被随机分成两半,那么从 的基因找最近的 基因,与找最近的另一个 基因,距离分布相近,;若两模块有共享基因或彼此穿插,跨模块的最近距离比模块内更短,;若两模块在网络中各居一处,。 可用两次多源 BFS 得到; 需要排除自身,可从每个 出发做 BFS,代价 。
DIAMOnD 的伪代码
算法 3 DIAMOnD 疾病模块扩展(Ghiassian 等, 2015)
输入:G(N 个节点);种子集合 S0;迭代次数 n;种子权重 α(默认 1)
输出:按加入顺序排列的节点列表
1. S ← S0
2. 重复 n 次:
3. C ← S 中节点的全部邻居 − S
4. 对每个 v ∈ C:
5. k ← 节点 v 的度;ks ← v 在 S 中的邻居数(种子计 α 份时,相应调整 N、|S|、k、ks)
6. p(v) ← Σ_{j=ks}^{k} C(|S|, j)·C(N−|S|, k−j) / C(N, k) # 超几何上尾
7. v* ← argmin p(v);S ← S ∪ {v*};记录 v*
8. 返回记录的顺序;模块边界由留出种子的召回率或独立注释的富集决定
复杂度:每次迭代需更新候选的 ks(只有 v* 的邻居会变),用对数阶乘计算 p 值;总计约 O(n·(|C| + k_max))
超几何
值在
和
都较大时数值很小,应在对数空间计算(如
scipy.stats.hypergeom.logsf)以免下溢。
扩散方法:带重启的随机游走
最短路径只看“最近的一条路”,对缺失一条边非常敏感。扩散方法综合了所有路径。设 为邻接矩阵,,列随机矩阵 。游走者每一步以概率 走到随机邻居,以概率 跳回种子集合,种子分布 (如 上均匀,其余为 0):
因为 的谱半径为 1, 的谱半径小于 1,迭代收敛到唯一的不动点
即所有长度 的游走按几何权重 加总: 越大越“局部”, 越小越“全局”。
算法 2 RWR 候选基因 / 药物打分
输入:邻接矩阵 A(稀疏);种子集合 S;重启概率 r;收敛阈值 tol(如 1e-6)
输出:每个节点的稳态分数 p*
1. W ← A D^{-1}(孤立节点需先移除)
2. p0 ← 1/|S| 于 S 上,其余为 0;p ← p0
3. 重复:p_new ← (1−r)·W·p + r·p0
4. 若 ||p_new − p||_1 < tol:停止;否则 p ← p_new
5. 返回 p*(排序时排除种子本身)
6. (去度偏倚)以度匹配随机种子集重复 1–5 共 B 次,
把每个节点的分数转为 z 分数或经验百分位
复杂度:每次迭代 O(M),迭代次数约 log(tol)/log(1−r);总计 O(B·M·log(1/tol)/r)
当 时,连通无向图上的 趋于平稳分布 ——分数正比于度。即使 适中,枢纽也会获得偏高的分数。因此 RWR 排名靠前的基因必须与度匹配随机种子比较,或改用对称归一化 等减弱度偏倚的变体。和邻近度一样,扩散分数高只说明“网络上接近”,不说明该蛋白是可行的干预靶点:方向(激活还是抑制)、可成药性、组织表达和毒性都不在模型之中。
热核与 RWR 的统一
热扩散
()的解是
。由于
与
可交换,
与 RWR 的
对比可见,两者都是
形式的游走长度加权和,权重分别为泊松分布与几何分布。几何分布的尾部更重,RWR
会给更长的游走留下更多权重;泊松分布集中在
附近。对称归一化下的同类核还包括正则化拉普拉斯核
与扩散核
()。大网络中无须显式计算矩阵指数,可用
Krylov 子空间方法直接求
(如
scipy.sparse.linalg.expm_multiply),RWR
则解一个稀疏线性方程组。