如何使用Biopython的PDBParser模块查找PDB文件中属于RNA链的模型和链
基于Biopython识别PDB中RNA链的实现方法
核心逻辑是通过判断链内残基的名称快速区分RNA链,标准RNA的核心残基为A、U、C、G四种,结合占比阈值可规避修饰残基、配体的干扰。
完整实现代码
from Bio.PDB import PDBParser # 初始化解析器,QUIET=True可屏蔽解析过程的格式警告 parser = PDBParser(QUIET=True) structure = parser.get_structure("custom_id", "你的PDB文件路径.pdb") # 定义标准RNA残基集合,可按需添加修饰RNA残基名 RNA_RESIDUES = {'A', 'U', 'C', 'G'} # RNA残基占比阈值,超过该阈值判定为RNA链,可按需调整 THRESHOLD = 0.8 # 遍历所有模型、链做判断 for model in structure: print(f"模型ID:{model.get_id()}") for chain in model: # 过滤掉异原子、水分子、配体等非主序列残基 main_chain_res = [res for res in chain.get_residues() if res.get_id()[0] == ' '] if not main_chain_res: continue # 统计RNA残基数量 rna_res_num = sum(1 for res in main_chain_res if res.get_resname().strip() in RNA_RESIDUES) # 判定是否为RNA链 if rna_res_num / len(main_chain_res) >= THRESHOLD: print(f" 链{chain.get_id()} 为RNA链,RNA残基占比:{rna_res_num/len(main_chain_res):.1%}")
逻辑说明
RNA_RESIDUES集合支持自定义扩展,若需要识别修饰型RNA,把对应的修饰残基名称(比如m6A、psU等)加入集合即可- 阈值
THRESHOLD可按需调整:如果处理的是无任何修饰的纯RNA序列,可设置为1;如果PDB中存在少量结合配体、融合蛋白残基,可适当调低阈值 - 过滤异原子的逻辑
res.get_id()[0] == ' '会自动排除非主序列残基,避免无关残基干扰统计结果
内容的提问来源于stack exchange,提问作者crommy
相关产品推荐
相关产品推荐

