python - 使用 Biopython 的 PDBIO 创建 PDB 文件时出现类型错误,仅限某些文件

标签 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

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

希望你能帮助我。如果我可以做一些事情来改进这个问题,请指出(我是新来的)。

编辑:明确地说,我想做的是

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

最佳答案

当 BioPython 尝试在 _ATOM_FORMAT_STRING 中使用 %c 格式写入两个字母的链名称时,会触发该错误。

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

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

(如果你写下你到底想做什么,有人可能会建议另一个解决方案)

关于python - 使用 Biopython 的 PDBIO 创建 PDB 文件时出现类型错误,仅限某些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50579608/

相关文章:

string - 如何使用字符串的切片来计算字符串中给定字符的概率?

python - 如何在 python 中合并重叠的字符串?

xml - 如何使用 entrez.efetch 获取特定的蛋白质序列?

python - Biopython 从变量而不是文件解析

python - 如何在Python中将文本文件分割成适当数量的列?

python 同时捕获多个错误

Python3.5 对象和 json.dumps() 输出

Python代码优化

python - 如何匹配一列中的唯一元素并列出第二列中的相应值

python - 从大文件中检索行的更有效方法