MI/KLdivergence 算法
1.二面角计算过程
{res={atoms,coord}}m
for resi in{res}m:
- switch (dihedrals_type)
- resi ---> 四原子 atom,coord
- 矢量叉积(coord)-->angle
2.MI计算
1)I(X;Y)=H(X)+H(Y)-H(X,Y)
H(X),H(Y)是单变量熵,H(X,Y)是联合熵
计算过程
输入矩阵:dihedrals×frame=[dij]mn
映射到[0-2pi]上:dij∈[0,2pi]
排序索引:将每一列的二面角进行排序,然后将每个二面角的值替换成排序后的索引值
for j:
- dij=idx(sort(di) && dik==dij)
S1计算:然后就是对每个列进行单变量熵的计算(这里的单变量指的就是二面角列表示的二面角)
for j:
- for k:
- H(X+Y)=H(dij)+H(dik)
S2计算:计算任意两个列的联合熵
for j:
- for k:
- H(XY)=H(dij,dik)
MI计算:
- I=H(X+Y)-H(XY)
通过I(XY)=H(X)+H(Y)-H(XY)就可以得到MI矩阵了
