我想在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
答案 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的作者