Ошибка типа при создании файла PDB с использованием PDBIO в Biopython, только с определенными файлами - PullRequest
0 голосов
/ 29 мая 2018

Я пишу скрипт, который перенумеровывает структуры белка (файлы CIF), а затем сохраняет их (файлы PDB: Biopython не имеет функции сохранения CIF).

Для большинства файлов, которые я использую, это работает.Но для файлов, таких как 6ek0.pdb, 5t2c.pdb и 4v6x.pdb, я продолжаю получать одинаковую ошибку TypeError для одной и той же строки функции io.save.Ошибка также возникает, когда я не перенумеровываю файл, а имею только ввод и вывод:

from Bio import PDB

io = PDB.PDBIO()
pdb_parser = PDB.MMCIFParser()
pdbfile = '/Users/jbibbe/Documents/2018Masterstage_2/Scripts_part2/PDBfiles/5t2c.cif'
structure = pdb_parser.get_structure(' ', pdbfile)
io.set_structure(structure)
io.save(pdbfile[:-4] + '_test.pdb')

Ошибка:

Traceback (most recent call last):
  File "/Users/jbibbe/Documents/2018Masterstage_2/Scripts_part2/testerfile.py", line 8, in <module>
    io.save(pdbfile[:-4] + '_test.pdb')
  File "/Users/jbibbe/anaconda2/lib/python2.7/site-packages/Bio/PDB/PDBIO.py", line 222, in save
    resseq, icode, chain_id)
  File "/Users/jbibbe/anaconda2/lib/python2.7/site-packages/Bio/PDB/PDBIO.py", line 112, in _get_atom_line
    return _ATOM_FORMAT_STRING % args
TypeError: %c requires int or char

Я посмотрел код исвойства атома, но я не мог видеть, что не так с типом свойств атома.Большинство частей в atom_format_string тщательно проверены Biopython, поэтому я предполагаю, что их типы были правильными.

Надеюсь, вы мне поможете.Если я могу что-то сделать, чтобы улучшить этот вопрос, пожалуйста, укажите (я новичок здесь).

Редактировать: Чтобы было ясно, я хочу сделать это

  1. понять, что пошло не так
  2. сохранить структуру

1 Ответ

0 голосов
/ 29 мая 2018

Ошибка возникает, когда BioPython пытается записать двухбуквенное имя цепочки в формате %c в _ATOM_FORMAT_STRING.

В более общем случае большие структуры, такие как 5T2C (рибосома), не могут быть записаны в традиционной PDBформат.Многие программы и библиотеки поддерживают двухсимвольные имена цепочек (записаны в столбцах 21-22), но стандарт заключается в том, чтобы в столбце 22 было однозначное цепочечное имя. Затем необходимо некоторое расширение нумерации атомов для поддержки более 99 999 атомов -самый популярный - hybrid-36 .

В любом случае, BioPython не поддерживает большие файлы PDB.

(если вы пишете, что именно вы хотите сделать, кто-то может бытьмогу предложить другое решение)

...