2015-03-18 13 views
1

Я хочу сделать график с Matplotlib в Python и, следовательно, прочитать некоторые данные из PDB-файла (банка данных о белках). Я хочу извлечь каждый столбец из файла и сохранить эти столбцы в отдельных векторах. PDB-файл состоит из столбцов с текстом и поплавками. Я очень новичок в Matplotlib, и я попытался предложить несколько методов для извлечения этих столбцов, но ничего не работает. Каким будет лучший способ извлечь эти столбцы? Я собираюсь загрузить много данных на более позднем этапе, поэтому хорошо, если метод не слишком неэффективен.Извлечь столбцы из банка данных с белками (PDB) Текстовый файл

В 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

Похоже, вы будете работать с числовыми данными, и в этом случае ['numpy'] (http://www.numpy.org/) является используемым модулем de facto. Это или ['pandas'] (http://pandas.pydata.org/), который построен поверх' numpy'. Посмотрите на ['np.genfromtxt'] (http://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html), который ест такие файлы с ограничением на завтрак. Кроме того, если вы отметите, что «ничего не работает», это хорошая идея в StackOverflow показать, что вы пытались и какие ошибки вы получите ... –

+1

Есть много пакетов Python, которые уже обрабатывают PDB. Проверьте [BioPython] (http://biopython.org/wiki/Main_Page), [OpenMM] (https://simtk.org/home/openmm) или [OpenBabel] (http://openbabel.org/wiki/ Python). В качестве альтернативы, если вы уверены, что ваши PDB будут в правильном формате, вы можете использовать [спецификацию] (http://www.rcsb.org/pdb/static.do?p=file_formats/pdb /index.html) и выберите соответствующие биты каждой строки. –

+0

Я должен добавить, что файлы PDB из банка данных также усложняются (разные идентификаторы цепей, коэффициенты B, несколько возможных позиций атомов), и перечисленные выше пакеты, похоже, поддерживают 'numpy', что является стандартом, как @OliverW. предлагает. –

ответ

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) 

Тогда, к примеру, вы можете получить список только атома ид, как это:

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

ВИДЕТЬ Biopython Structural Bioinformatics FAQ для более подробно, включая следующие способы доступа к столбцам 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.') 
1

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

Что касается выделения столбца, вы также можете найти ответ на google или wiki.