AlphaFold2代码阅读(十三)

2021SC@SDUSC


前言:接着上一篇继续阅读


atom37_to_torsion_angles

def atom37_to_torsion_angles(
    aatype: jnp.ndarray,  # (B, N)
    all_atom_pos: jnp.ndarray,  # (B, N, 37, 3)
    all_atom_mask: jnp.ndarray,  # (B, N, 37)
    placeholder_for_undefined=False,
) -> Dict[str, jnp.ndarray]:

这个函数是计算每个残基的 7 个扭转角并且以正弦、余弦编码。
7个扭转角的顺序 分别是[pre_omega, phi, psi, chi_1, chi_2, chi_3, chi_4]
这里 pre_omega 表示给定氨基酸之间的欧米茄扭转角和之前的氨基酸。
这个函数的参数解释如下:
参数:
aatype:氨基酸类型,以整数数组形式给出。
all_atom_pos:所有原子坐标的 atom37 表示。
all_atom_mask:所有原子坐标上掩码的 atom37 表示。
placeholder_for_undefined:表示是否设置屏蔽扭转的标志角度为零

aatype = jnp.minimum(aatype, 20)

上述代码段是 将 aatype > 20 映射到 ‘Unknown’ (20)中去

num_batch, num_res = aatype.shape

pad = jnp.zeros([num_batch, 1, 37, 3], jnp.float32)
prev_all_atom_pos = jnp.concatenate([pad, all_atom_pos[:, :-1, :, :]], axis=1)

pad = jnp.zeros([num_batch, 1, 37], jnp.float32)
prev_all_atom_mask = jnp.concatenate([pad, all_atom_mask[:, :-1, :]], axis=1)

上述代码段是计算骨干角度。

pre_omega_atom_pos = jnp.concatenate(
      [prev_all_atom_pos[:, :, 1:3, :],  # prev CA, C
       all_atom_pos[:, :, 0:2, :]  # this N, CA
      ], axis=-2)
  phi_atom_pos = jnp.concatenate(
      [prev_all_ato
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值