mindsponge.metrics.local_distance_difference_test
- mindsponge.metrics.local_distance_difference_test(predicted_points, true_points, true_points_mask, cutoff=15, per_residue=False)[源代码]
计算真实与预测的 \(C\alpha\) 坐标的局部距离误差。 首先分别计算真实和预测 \(C\alpha\) 原子坐标的距离矩阵, \(D = (((x[None,:] - x[:,None])^2).sum(-1))^{0.5}\)。 然后计算两者差值小于固定数值的比例: \(lddt = (rate(abs(D_{true} - D_{pred}) < 0.5) + rate(abs(D_{true} - D_{pred}) < 1.0) + rate(abs(D_{true} - D_{pred}) < 2.0) + rate(abs(D_{true} - D_{pred}) < 4.0))/4\)。
Jumper et al. (2021) Suppl. Alg. 29 “predictPerResidueLDDT_Ca”.
- 参数:
predicted_points (Tensor) - 预测的 \(C\alpha\) 原子的坐标,shape为 \((1, N_{res}, 3)\) ,其中 \(N_{res}\) 是蛋白质中的残基数目。
true_points (Tensor) - 真实的 \(C\alpha\) 原子的坐标,shape为 \((1, N_{res}, 3)\) 。
true_points_mask (Tensor) - true_points的mask,shape为 \((1, N_{res}, 1)\) 。
cutoff (float) - 距离误差的截断点,超过该距离时梯度不再考虑,常量。
per_residue (bool) - 指示是否按残基为单位计算局部距离差,如果设为True则按残基为单位返回局部距离差值,默认值:
False
。
- 返回:
score (list) - Tensor。局部距离误差,如果 per_residue 为
False
则shape为 \((1,)\) ,否则为 \((1, N_{res})\) 。
- 支持平台:
Ascend
GPU
样例:
>>> import numpy as np >>> np.random.seed(0) >>> from mindsponge.metrics import local_distance_difference_test >>> from mindspore import dtype as mstype >>> from mindspore import Tensor >>> predicted_points = Tensor(np.random.rand(1, 256, 3)).astype(mstype.float32) >>> true_points = Tensor(np.random.rand(1, 256, 3)).astype(mstype.float32) >>> true_points_mask = Tensor(np.random.rand(1, 256, 1)).astype(mstype.float32) >>> lddt = local_distance_difference_test(predicted_points, true_points, true_points_mask, ... cutoff=15, per_residue=False) >>> print(lddt) [0.9554313]