drmsd
(distance Root Mean Square Deviation,距离均方根偏差)函数在AlphaFold3的 src.utils.validation_metrics模块中定义,用于计算两个蛋白质结构(或其他分子结构)之间的距离偏差。它衡量了两个结构的 成对原子间距离 差异,而不是直接比较原子坐标。这种度量方式比 RMSD(Root Mean Square Deviation,均方根偏差)更能反映全局结构差异,因为它不会受到全局对齐的影响。
源代码:
import torch
from typing import Optionaldef drmsd(structure_1: torch.Tensor, structure_2: torch.Tensor, mask: Optional[torch.Tensor] = None) -> torch.Tensor:"""Calculate the distance Root Mean Square Deviation (dRMSD) between two structures.Args:structure_1 (torch.Tensor): First structure of shape [..., N, 3]structure_2 (torch.Tensor): Second structure of shape [..., N, 3]mask (Optional[torch.Tensor]): Mask of shape [..., N] indicating valid positionsReturns:torch.Tensor: The dRMSD between the two structures"""def pairwise_distances(structure: torch.Tensor) -> torch.Tensor:"""Calculate pairwise distances within a structure."""diff = structure[..., :, None, :] - structure[..., None, :, :]return torch.norm(diff, dim=-1)d1 = pairwise_dis