Biopython提供Bio.PDB模块来操纵多肽结构. PDB(蛋白质数据库)是在线提供的最大蛋白质结构资源.它含有许多不同的蛋白质结构,包括蛋白质 - 蛋白质,蛋白质 - DNA,蛋白质 - RNA复合物.
为了加载PDB,输入以下命令 :
from Bio.PDB import *
蛋白质结构文件格式
PDB以三种不同的格式分发蛋白质结构 :
基于XML的文件格式不是Biopython支持
pdb文件格式,这是一种特殊格式的文本文件
PDBx/mmCIF文件格式
蛋白质数据库分发的PDB文件可能包含格式错误,导致它们不明确或难以解析. Bio.PDB模块尝试自动处理这些错误.
Bio.PDB模块实现了两种不同的解析器,一种是mmCIF格式,另一种是pdb格式.
让我们学习如何详细解析每种格式 :
mmCIF Parser
让我们下载一个示例数据库来自pdb服务器的mmCIF格式,使用以下命令 :
>>> pdbl = PDBList()>>> pdbl.retrieve_pdb_file('2FAT',pdir ='.',file_format ='mmCif')
这将从下载指定的文件(2fat.cif)服务器并将其存储在当前工作目录中.
此处,PDBList提供从在线PDB FTP服务器列出和下载文件的选项. retrieve_pdb_file方法需要在没有扩展名的情况下下载文件的名称. retrieve_pdb_file还可以选择指定文件的下载目录,pdir和格式,file_format.文件格式的可能值如下:<
"mmCif"(默认为PDBx/mmCif文件)
"pdb"(格式PDB)
"xml"(PMDML/XML格式)
"mmtf"(高度压缩) )
"bundle"(大型结构的PDB格式存档)
要加载cif文件,请使用Bio .MMCIF.MMCIFParser如下所示 :
>>> parser = MMCIFParser(QUIET = True)>>> data = parser.get_structure("2FAT","2FAT.cif")
这里,QUIET在解析文件时禁止发出警告. get_structure将解析文件并返回id为2FAT的结构(第一个参数).
运行上述命令后,它会解析文件并打印可能的警告,如果有的话.
现在,使用以下命令检查结构 :
>>> dataTo get the type, use type method as specified below,>>> print(type(data))
我们已成功解析文件并获得了蛋白质的结构.我们将在后面的章节中学习蛋白质结构的细节以及如何获得它.
PDB Parser
让我们下载一个示例数据库来自pdb服务器的PDB格式使用以下命令 :
>>> pdbl = PDBList()>>> pdbl.retrieve_pdb_file('2FAT',pdir ='.',file_format ='pdb')
这将从下载指定的文件(pdb2fat.ent)服务器并将其存储在当前工作目录中.
要加载pdb文件,请使用下面指定的Bio.PDB.PDBParser :
>>> parser = PDBParser(PERMISSIVE = True,QUIET = True)>>> data = parser.get_structure("2fat","pdb2fat.ent")
这里,get_structure类似于MMCIFParser. PERMISSIVE选项尝试尽可能灵活地解析蛋白质数据.
现在,使用下面给出的代码片段检查结构及其类型;
>>> data>>> print(type(data))
好吧,标题结构存储字典信息.要执行此操作,请键入以下命令 :
>>> print(data.header.keys())dict_keys(['name','head','deposition_date','release_date','structure_method','resolution','detructure_reference',' journal_reference','author','compound','source','keywords','journal'])>>>
要获取名称,请使用以下代码 :
>>> print(data.header["name"]) an anti-urokinase plasminogen activator receptor (upar) antibody: crystal structure and binding epitope>>>
您还可以使用以下代码检查日期和分辨率 :
>>> print(data.header ["release_date"])2006-11-14 >>> print(data.header ["resolution"])1.77
PDB结构
PDB结构由单个组成模型,包含两个链.
链L,包含残留数量
链H,含有残留数
每个残基由多个原子组成,每个原子都有一个由(x,y,z)坐标表示的3D位置.
让我们在下面的章节中详细了解如何获得原子结构 :
模型
Structure.get_models()方法返回模型上的迭代器.它的定义低于 :
>>> model = data.get_models()>>> model < generator object get_models at 0x103fa1c80> >>> models = list(model)>>> models [< Model id = 0>] >>> type(models [0])< class'Bio.PDB.Model.Model'>
这里,模型只描述了一个3D构象.它包含一个或多个链.
链
Model.get_chain()方法返回链上的迭代器.它的定义低于 :
>>> chains = list(models [0] .get_chains())>>> chain [< Chain id = L>,< Chain id = H>] >>> type(chains [0])< class'Bio.PDB.Chain.Chain'>
这里,Chain描述了一种合适的多肽结构,即连续的结合残基序列.
残留
Chain.get_residues()方法返回残差的迭代器.它的定义低于 :
>>> residue = list(chains[0].get_residues())>>> len(residue) 293 >>> residue1 = list(chains[1].get_residues()) >>> len(residue1) 311嗯,残留物含有属于氨基酸的原子.
原子
Residue.get_atom()返回原子上的迭代器,定义如下 :
>>> atoms = list(residue [0] .get_atoms())>>> atoms [< Atom N>,< Atom CA>,< Atom C>,< Atom Ov,< Atom CB>,< Atom CG>,< Atom OD1>,< Atom OD2>]
原子保存原子的3D坐标,称为Vector.它定义如下
>>> atoms [0] .get_vector()< Vector 18.49,73.26,44.16>
它代表x,y和z坐标值.