Biopython - PDB模块

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的结构(第一个参数).

运行上述命令后,它会解析文件并打印可能的警告,如果有的话.

现在,使用以下命令检查结构 :

>>> data 
<Structure id = 2FAT>

To get the type, use type method as specified below,

>>> print(type(data)) 
<class 'Bio.PDB.Structure.Structure'>

我们已成功解析文件并获得了蛋白质的结构.我们将在后面的章节中学习蛋白质结构的细节以及如何获得它.

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 
<Structure id = 2fat> 
>>> print(type(data)) 
<class 'Bio.PDB.Structure.Structure'>

好吧,标题结构存储字典信息.要执行此操作,请键入以下命令 :

 
>>> 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坐标值.