开发手册 欢迎您!
软件开发者资料库

Biopython - PDB模块

Biopython PDB模块 - 从简单和简单的步骤开始学习Biopython,从基本到高级概念,包括简介,安装,创建简单应用程序,序列,高级序列操作,序列I / O操作,序列比对,BLAST概述,Entrez数据库, PDB模块,Motif对象,BioSQL模块,群体遗传学,基因组分析,表型微阵列,绘图,聚类分析,机器学习,测试技术。

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