Извлечение столбцов из текстового файла банка данных белка (PDB)

Я хочу построить сюжет с Matplotlib на Python и, следовательно, прочитать некоторые данные из 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

2 ответа

Решение

Исходя из рекомендации @Kyle_S-C, вот способ сделать это с помощью 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:

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

Дополнительную информацию смотрите в разделе часто задаваемых вопросов о биопоинформатике Biopython, включая следующие способы доступа к столбцам PDB для Atom:

Как извлечь информацию из объекта 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.')

Формат файла Protein Data Bank (pdb) представляет собой текстовый формат файла, описывающий трехмерные структуры молекул, хранящихся в Protein Data Bank. Соответственно, формат pdb обеспечивает описание и аннотацию структур белков и нуклеиновых кислот, включая атомные координаты, наблюдаемые ротамеры боковых цепей, назначения вторичной структуры, а также атомную связь. Я нахожу это в Google.

Что касается извлечения столбца, вы также можете найти ответ на Google или вики.

Это руководство может помочь: 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

Другие вопросы по тегам