从蛋白质数据库(PDB)文本文件中提取列

时间:2015-03-18 21:54:36

标签: python file protein-database

我想在Python中使用Matplotlib创建一个绘图,因此从PDB文件(蛋白质数据库)中读取一些数据。我想从文件中提取每一列,并将这些列存储在不同的向量中。 PDB文件由包含文本和浮动的列组成。我对Matplotlib很新,我尝试了几种建议提取这些列的方法,但似乎没什么用。提取这些列的最佳方法是什么?我将在后期加载大量数据,所以如果方法效率不高,那就太好了。

PDB文件看起来像这样:

ATOM      1  CA  MET A   1      38.012   8.932  -1.253
ATOM      2  CA  GLU A   2      39.809   5.652  -1.702
ATOM      3  CA  ALA A   3      43.007   5.013   0.368
ATOM      4  CA  ALA A   4      41.646   7.577   2.820
ATOM      5  CA  HIS A   5      42.611   4.898   5.481
ATOM      6  CA  SER A   6      46.191   5.923   5.090
ATOM      7  CA  LYS A   7      45.664   9.815   5.134
ATOM      8  CA  SER A   8      45.898  12.022   8.181
ATOM      9  CA  THR A   9      42.528  13.075   9.570
ATOM     10  CA  GLU A  10      43.330  16.633   8.378
ATOM     11  CA  GLU A  11      44.171  15.729   4.757
ATOM     12  CA  CYS A  12      40.589  14.150   4.745
ATOM     13  CA  LEU A  13      38.984  17.314   6.105
ATOM     14  CA  ALA A  14      40.633  19.053   3.220
ATOM     15  CA  TYR A  15      39.740  16.682   0.505
ATOM     16  CA  PHE A  16      36.138  17.421   1.566
ATOM     17  CA  GLY A  17      36.536  20.854   2.826
ATOM     18  CA  VAL A  18      34.184  20.012   5.553
ATOM     19  CA  SER A  19      34.483  20.966   9.177

3 个答案:

答案 0 :(得分:1)

蛋白质数据库(pdb)文件格式是描述蛋白质数据库中保留的分子的三维结构的文本文件格式。因此,pdb格式提供蛋白质和核酸结构的描述和注释,包括原子坐标,观察到的侧链旋转异构体,二级结构分配以及原子连接。我在谷歌上发现了这一点。

至于提取列,你也可以在谷歌或维基上找到答案。

答案 1 :(得分:0)

关于@Kyle_S-C的建议,这是使用Biopython进行的一种方法。

首先将您的文件读入Biopython Structure对象:

import Bio.PDB
path = '/path/to/PDB/file' # your file path here
p = Bio.PDB.PDBParser()
structure = p.get_structure('myStructureName', path)

然后,例如,你可以像这样得到一个Atom id的列表:

ids = [a.get_id() for a in structure.get_atoms()]

有关更多信息,请参阅Biopython Structural Bioinformatics FAQ,包括以下访问Atom的PDB列的方法:

  

如何从Atom对象中提取信息?

     

使用以下方法:

# a.get_name()           # atom name (spaces stripped, e.g. 'CA')
# a.get_id()             # id (equals atom name)
# a.get_coord()          # atomic coordinates
# a.get_vector()         # atomic coordinates as Vector object
# a.get_bfactor()        # isotropic B factor
# a.get_occupancy()      # occupancy
# a.get_altloc()         # alternative location specifier
# a.get_sigatm()         # std. dev. of atomic parameters
# a.get_siguij()         # std. dev. of anisotropic B factor
# a.get_anisou()         # anisotropic B factor
# a.get_fullname()       # atom name (with spaces, e.g. '.CA.')

答案 2 :(得分:0)

本教程可能会有所帮助:https://py-packman.readthedocs.io/en/latest/tutorials/molecule.html#tutorials-molecule

from packman import molecule

Protein = molecule.load_structure('/path/to/PDB/file.pdb')
#molecule.download_structure('1prw','1prw.pdb') if you want to download PDB file 1prw.pdb


for i in Protein[0].get_atoms():
    #Iterating over atom objects (parent= residue)
    print(i.get_name(), i.get_id(), i.get_location(), i.get_parent().get_name())

上面提供的是获取原子名称的方法,即i.get_name(),原子id的方法即i.get_id()等。

可以提取PDB文件的所有组件。有关详细信息,请阅读PACKMAN文档。

披露:软件包py-packman的作者