RFDiffusion 计算二面角函数get_dih解读
get_dih
函数计算任意四个连续原子之间的二面角(dihedral angle),它描述了主链和侧链原子的三维空间排布。
源代码:
def get_dih(a, b, c, d):
"""calculate dihedral angles for all consecutive quadruples (a[i],b[i],c[i],d[i])
given Cartesian coordinates of four sets of atoms a,b,c,d
Parameters
----------
a,b,c,d : pytorch tensors or numpy array of shape [batch,nres,3]
store Cartesian coordinates of four sets of atoms
Returns
-------
dih : pytorch tensor or numpy array of shape [batch,nres]
stores resulting dihedrals
"""
convert_to_torch = lambda *arrays: [torch.from_numpy(arr) for arr in arrays]
output_np=False
if isinstance(a, np.ndarray):
output_np=True
a,b,c,d = convert_to_torch(a,b,c,d)
b0 = a - b
b1 = c - b
b2 = d - c
b1 /= torch.norm(b1, dim=-1, keepdim=True)
原文地址:https://blog.csdn.net/qq_27390023/article/details/144459730
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!