使用Biopython的PDBIO创建PDB文件时的TypeError,仅适用于某些文件

时间:2018-05-29 08:24:05

标签: python bioinformatics biopython protein-database

我正在编写一个脚本,重新编号蛋白质结构(CIF文件),然后保存它们(PDB文件:Biopython没有CIF保存功能)。

对于我使用的大多数文件,它都有效。但是对于像6ek0.pdb,5t2c.pdb和4v6x.pdb这样的文件,我在io.save函数的同一行继续获得相同的TypeError。当我不对文件重新编号时,错误也存在,只有输入和输出如下:

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

我查看了代码和原子属性,但我看不出原子属性的类型有什么问题。通过Biopython彻底检查atom_format_string中的大多数部分,所以我认为它们的类型是正确的。

我希望你能帮助我。如果我能做些什么来改善这个问题,请说明(我是新来的)。

编辑:要明确,我想要做的是

  1. 了解出了什么问题
  2. 保存结构

1 个答案:

答案 0 :(得分:1)

当BioPython尝试在%c中使用_ATOM_FORMAT_STRING格式编写双字母链名称时,会触发错误。

更一般地说,5T2C(核糖体)等大结构不能用传统的PDB格式编写。许多程序和库支持双字符链名称(在第21-22栏中编写),但标准是在第22列中使用单字符链名称。然后,您需要一些原子编号的扩展来支持超过99,999个原子 - 最受欢迎的是hybrid-36

无论如何,BioPython不支持大PDB文件。

(如果您写下您想要做的事情,某人可能会建议另一种解决方案)