铜川网站建设公司电话win7优化大师好不好
AlphaFold3 中的get_atom_coords函数的主要作用是从 MmcifObject
中提取某条链的所有原子坐标,并返回坐标矩阵和掩码矩阵,以便后续用于蛋白质建模或 AlphaFold3 的预测。
源代码:
def get_atom_coords(mmcif_object: MmcifObject, chain_id: str, _zero_center_positions: bool = False
) -> Tuple[np.ndarray, np.ndarray]:# Locate the right chainchains = list(mmcif_object.structure.get_chains())relevant_chains = [c for c in chains if c.id == chain_id]if len(relevant_chains) != 1:raise MultipleChainsError(f"Expected exactly one chain in structure with id {chain_id}.")chain = relevant_chains[0]# Extract the coordinatesnum_res = len(mmcif_object.chain_to_seqres[chain_id])all_atom_positions = np.zeros([num_res, residue_constants.atom_type_num, 3], dtype=np.float32)all_atom_mask = np.zeros([num_res, residue_constants.atom_type_num], dtype=np.float32)for res_index in range(num_res):pos = np.zeros([residue_constants.atom_type_num, 3], dtype=np.float32)mask = np.zeros([residue_constants.atom_type_num], dtype=np.float32)res_at_position = mmcif_object.seqres_to_structure[chain_id][res_index]if not res_at_position.is_missing:res = chain[(res_at_position.hetflag,res_at_position.position.residue_number,res_at_position.position.insertion_code,)]for atom in res.get_atoms():atom_name = atom.get_name()x, y, z = atom.get_coord()if atom_name in residue_constants.atom_order.keys():pos[residue_constants.atom_order[atom_name]] = [x, y, z]mask[residue_constants.atom_order[atom_name]] = 1.0elif atom_name.upper() == "SE" and res.get_resname() == "MSE":# Put the coords of the selenium atom in the sulphur columnpos[residue_constants.atom_order["SD"]] = [x, y, z]mask[residue_constants.atom_order["SD"]] = 1.0# Fix naming errors in arginine residu