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

2024-09-28 22:33:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

对于我使用的大多数文件,它是有效的。但是对于像6ek0.pdb、5t2c.pdb和4v6x.pdb这样的文件,我总是在同一行中得到相同的类型错误io.保存功能。当我没有对文件重新编号时,也会出现错误,只有这样的输入和输出:

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属性,但看不出atom属性的类型有什么问题。atom格式字符串中的大多数部分都经过Biopython的彻底检查,因此我认为它们的类型是正确的。你知道吗

我希望你能帮助我。如果我能做些什么来改进这个问题,请指出(我是新来的)。你知道吗

编辑:说清楚,我想做的是

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

Tags: 文件io类型save错误linestructureusers
1条回答
网友
1楼 · 发布于 2024-09-28 22:33:54

当BioPython试图用%c格式在_ATOM_FORMAT_STRING中写入两个字母的链名时,会触发此错误。你知道吗

一般来说,像5T2C(核糖体)这样的大结构不能用传统的PDB格式编写。许多程序和库支持两个字符链名称(写在第21-22列中),但标准是在第22列中有一个字符链名称。然后需要对原子编号进行一些扩展,以支持99999个以上的原子—最流行的是hybrid-36。你知道吗

无论如何,BioPython不支持大的PDB文件。你知道吗

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

相关问题 更多 >