Извлечение столбцов из текстового файла банка данных белка (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