计算氨基酸残基之间的键角和二面角
在蛋白质结构中,不同的角度由特定的原子位置决定。常见的原子类型包括氨基酸主链中的 Cα(α 碳)、C(羰基碳)、N(氮原子)和 O(氧原子)。为了更加清晰,下面给出几种常见角度的定义及其对应的原子类型:
使用具体原子的坐标计算键角和二面角
1. 计算 N−Cα−C 的键角
import torchdef compute_bond_angle(N, C_alpha, C):# 向量N到C_alpha 和 C_alpha到CN_to_C_alpha = N - C_alphaC_alpha_to_C = C - C_alpha# 计算点积和模长dot_product = torch.sum(N_to_C_alpha * C_alpha_to_C, dim=-1)norm_N_to_C_alpha = torch.norm(N_to_C_alpha, dim=-1)norm_C_alpha_to_C = torch.norm(C_alpha_to_C, dim=-1)# 计算cosθcos_theta = dot_product / (norm_N_to_C_alpha * norm_C_alpha_to_C + 1e-8)# 计算角度angle = torch.acos(torch.clamp(cos_theta, -1.0, 1.0))