切换模式
返回顶部
首页
首页
多进程蛋白质结构PDB计算接触图
默认分类
·
03-30
ly
```python import os import numpy as np from Bio.PDB import PDBParser from multiprocessing import Pool def calculate_residue_centroid(residue): """计算氨基酸残基的几何中心(排除氢原子)""" atoms = [atom for atom in residue.get_atoms() if atom.element != 'H'] coordinates = np.array([atom.get_coord() for atom in atoms]) return coordinates.mean(axis=0) def calculate_centroid_contact_map(structure, chain_id, threshold=8.0): """生成基于质心的接触矩阵""" chain = structure[0][chain_id] residues = list(chain.get_residues()) n = len(residues) cmap = np.zeros((n, n), dtype=int) centroids = [calculate_residue_centroid(res) for res in residues] for i in range(n): for j in range(i+1, n): distance = np.linalg.norm(centroids[i] - centroids[j]) if distance < threshold: cmap[i][j] = cmap[j][i] = 1 return cmap def process_file(args): """多进程处理单个文件的函数""" filename, input_dir, save_dir, threshold = args parser = PDBParser() # 每个进程独立创建解析器 try: pro_name = filename.replace(".pdb", "") input_path = os.path.join(input_dir, filename) save_path = os.path.join(save_dir, pro_name) # 解析结构并计算接触矩阵 structure = parser.get_structure("protein", input_path) cmap = calculate_centroid_contact_map(structure, "A", threshold) np.save(save_path, cmap) except Exception as e: print(f"处理文件 {filename} 时出错: {e}") if __name__ == "__main__": # 配置路径和参数 input_dir = "alphaflod2_pdb/PDB14189/PDB14189" save_dir = "alphafold2_map/PDB14189" threshold = 10.0 # 确保输出目录存在 os.makedirs(save_dir, exist_ok=True) # 获取待处理的PDB文件列表 filenames = [f for f in os.listdir(input_dir) if f.endswith(".pdb")] # 构造参数列表(每个元素包含文件信息和参数) args_list = [(fname, input_dir, save_dir, threshold) for fname in filenames] # 创建进程池并行处理 with Pool() as pool: # 默认使用所有CPU核心 pool.map(process_file, args_list) ```
取消回复
提交评论
ly
热门文章
最新评论
鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099: 华纳东方明珠客服电话是多少?(??155--8729--1507...
鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099: 华纳东方明珠客服电话是多少?(??155--8729--1507...
鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099: 华纳东方明珠客服电话是多少?(??155--8729--1507...
鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099: 华纳东方明珠客服电话是多少?(??155--8729--1507...
鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099: 华纳东方明珠客服电话是多少?(▲18288362750?《?微信...
鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099: 华纳东方明珠客服电话是多少?(▲18288362750?《?微信...
鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099: 华纳东方明珠客服电话是多少?(▲18288362750?《?微信...
热门标签
关于站长
Theme
Jasmine
by
Kent Liao