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α 坐标的局部距离误差。 首先分别计算真实和预测 Cα 原子坐标的距离矩阵, D=(((x[None,:]x[:,None])2).sum(1))0.5。 然后计算两者差值小于固定数值的比例: lddt=(rate(abs(DtrueDpred)<0.5)+rate(abs(DtrueDpred)<1.0)+rate(abs(DtrueDpred)<2.0)+rate(abs(DtrueDpred)<4.0))/4

Jumper et al. (2021) Suppl. Alg. 29 “predictPerResidueLDDT_Ca”.

参数:
  • predicted_points (Tensor) - 预测的 Cα 原子的坐标,shape为 (1,Nres,3) ,其中 Nres 是蛋白质中的残基数目。

  • true_points (Tensor) - 真实的 Cα 原子的坐标,shape为 (1,Nres,3)

  • true_points_mask (Tensor) - true_points的mask,shape为 (1,Nres,1)

  • cutoff (float) - 距离误差的截断点,超过该距离时梯度不再考虑,常量。

  • per_residue (bool) - 指示是否按残基为单位计算局部距离差,如果设为True则按残基为单位返回局部距离差值,默认值: False

返回:
  • score (list) - Tensor。局部距离误差,如果 per_residueFalse 则shape为 (1,) ,否则为 (1,Nres)

支持平台:

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]