提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文件读取
导入PDBParser
读取本地pdb文件
>>> from Bio.PDB import PDBParser
>>> p=PDBParser()
>>> s=p.get_structure("7kn5","7kn5.pdb")
>>> s
<Structure id=7kn5>
get_strucutre()
方法有两个参数,第一个参数为id,相当于一个可以自己指定的名字,第二个参数是文件名
结构的表示
一个 Structure
对象的整体布局遵循称为SMCRA(Structure/Model/Chain/Residue/Atom,结构/模型/链/残基/原子)的体系架构:
- 结构由模型组成
- 模型由多条链组成
- 链由残基组成
- 多个原子构成残基
>>> model=s[0] >>> model <Model id=0> >>> chain=model['A'] >>> chain <Chain id=A> >>> for i in chain: ... print(i) ... <Residue GLN het= resseq=1 icode= > <Residue VAL het= resseq=2 icode= > <Residue GLN het= resseq=3 icode= > >>> chain[3] <Residue GLN het= resseq=3 icode= >
笔者这里导入的蛋白是一个只有单链的蛋白,因此chain也只有一条,对于有多条链的蛋白可以用ABCDEF一直索引下去;而每个链由多个氨基酸组成,直接使用下标索引可以找到,这里只列出了遍历结果的小部分。
注意:chain的下标是从1开始的,不是从0开始的对于不同链的描述,其实用PDB也可以看到的
残基对象的一些其他方法:
>>> residue.get_resname() # 返回残基名称,如 "ASN" >>> residue.is_disordered() # 返回1如果该残基含有无序原子 >>> residue.get_segid() # 返回其SEGID如"CHN1" >>> residue.has_id(name) # 判断一个残疾是否有某个原子
atom对象包含在chain:
>>>chain[1] <Residue GLN het= resseq=1 icode= > >>> for atom in chain[1]: ... print(atom) ... <Atom N> <Atom CA> <Atom C> <Atom CB> <Atom O> <Atom CG> <Atom CD> <Atom NE2> <Atom OE1>
用文字索引可以指向某个chain的atom:
>>> atom=residue['CA']
>>> for key in atom.__dict__: ... print(key,atom.__dict__[key]) ... level A parent <Residue GLN het= resseq=1 icode= > name CA fullname CA coord [20.024 -3.073 -1.719] bfactor 86.76 occupancy 1.0 altloc full_id ('7kn5', 0, 'A', (' ', 1, ' '), ('CA', ' ')) id CA disordered_flag 0 anisou_array None siguij_array None sigatm_array None serial_number 2 xtra {} element C mass 12.0107 pqr_charge None radius None _sorting_keys {'N': 0, 'CA': 1, 'C': 2, 'O': 3}
可以看出,atom对象中存储了包括原子名称,原子坐标,B因子,原子质量,altloc标识符和原子名称等数据
随缘更新后续内容