Biopython PDB模块

Biopython PDB模块

Biopython提供了Bio.PDB模块来操作多肽结构。PDB(Protein Data Bank)是网上最大的蛋白质结构资源。它承载了很多独特的蛋白质结构,包括蛋白质-蛋白质、蛋白质-DNA、蛋白质-RNA复合体。

为了加载PDB,请输入以下命令

from Bio.PDB import *

蛋白质结构文件格式

PDB以三种不同的格式发布蛋白质结构文件

  • 基于XML的文件格式,Biopython不支持这种格式。
  • pdb文件格式,它是一种特殊格式的文本文件
  • PDBx/mmCIF文件格式

蛋白质数据库分发的PDB文件可能包含格式错误,使其含糊不清或难以解析。Bio.PDB模块试图自动处理这些错误。

Bio.PDB模块实现了两个不同的解析器,一个是mmCIF格式,第二个是pdb格式。

让我们来学习如何详细解析每一种格式。

mmCIF解析器

让我们用下面的命令从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解析器

Let us download an example database in PDB format from pdb server using the below command −

>>> 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选项试图尽可能灵活地解析蛋白质数据。

Now, check the structure and its type with the code snippet given below −

>>> 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', 
   'structure_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)坐标表示的三维位置。

让我们在下面的章节中详细了解如何获得原子的结构 –

模型

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'>

这里,一个模型正好描述了一个三维构象。它包含一条或多条链。

Model.get_chain()方法返回一个链的迭代器。它的定义如下 –

>>> chains = list(models[0].get_chains()) 
>>> chains 
[<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持有属于一个氨基酸的原子。

原子

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>]

一个原子持有一个原子的三维坐标,它被称为一个矢量。它的定义如下

>>> atoms[0].get_vector() 
<Vector 18.49, 73.26, 44.16>

它代表x、y和z坐标值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程