mindsponge.common.find_optimal_renaming

mindsponge.common.find_optimal_renaming(atom14_gt_positions, atom14_alt_gt_positions, atom14_atom_is_ambiguous, atom14_gt_exists, atom14_pred_positions)[源代码]

通过最大化LDDT值,确定具手性的氨基酸残基的最佳原子坐标。具体计算过程参考: Jumper et al. (2021) Suppl. Alg. 26 “renameSymmetricGroundTruthAtoms”

参数:
  • atom14_gt_positions (Tensor) - 全局坐标系中的真实原子坐标值,采用atom14表示,shape为 \((N_{res}, 14, 3)\)

  • atom14_alt_gt_positions (Tensor) - 备选的真实原子坐标,部分氨基酸存在手性,因此使用手性对称的位置作为备选真实原子坐标值,shape为 \((N_{res}, 14, 3\))。

  • atom14_atom_is_ambiguous (Tensor) - 掩码表示是否是手性原子中,shape为 \((N_{res}, 14)\)

  • atom14_gt_exists (Tensor) - 掩码表明真实结构中原子是否存在,shape为 \((N_{res}, 14)\)

  • atom14_pred_positions (Tensor) - 全局坐标系中预测得到的原子坐标值,shape为 \((N_{res}, 14, 3)\)

返回:

Tensor。 atom14_alt_gt_positionsatom14_pred_positions 更接近的位置为1,否则是0,shape为 \((N_{res},)\)

支持平台:

Ascend GPU

样例:

>>> import numpy as np
>>> from mindsponge.common.utils import find_optimal_renaming
>>> from mindspore import Tensor
>>> n_res = 16
>>> atom14_gt_positions = Tensor(np.random.randn(n_res, 14, 3).astype(np.float32))
>>> atom14_alt_gt_positions = Tensor(np.random.randn(n_res, 14, 3).astype(np.float32))
>>> atom14_atom_is_ambiguous = Tensor(np.random.randn(n_res, 14).astype(np.float32))
>>> atom14_gt_exists = Tensor(np.random.randn(n_res, 14).astype(np.float32))
>>> atom14_pred_positions = Tensor(np.random.randn(n_res, 14, 3).astype(np.float32))
>>> out = find_optimal_renaming(atom14_gt_positions, atom14_alt_gt_positions,
...                             atom14_atom_is_ambiguous, atom14_gt_exists, atom14_pred_positions)
>>> print(out.shape)
(16,)