AF3get_atom_coords函数解读
- 手机
- 2025-09-09 01:54:02

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 chain chains = 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 coordinates num_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.0 elif atom_name.upper() == "SE" and res.get_resname() == "MSE": # Put the coords of the selenium atom in the sulphur column pos[residue_constants.atom_order["SD"]] = [x, y, z] mask[residue_constants.atom_order["SD"]] = 1.0 # Fix naming errors in arginine residuAF3get_atom_coords函数解读由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“AF3get_atom_coords函数解读”
上一篇
axios