python - 如何在pdb中添加链ID

标签 python biopython protein-database

通过使用biopython库,我想在我的pdb文件中添加链ID。 我正在使用

p = PDBParser()
structure=p.get_structure('mypdb',mypdb.pdb)
model=structure[0]
model.child_list=["A","B"]

但是我收到了这个错误:

Traceback (most recent call last):
  File "../../principal_axis_v3.py", line 319, in <module>
    main()
  File "../../principal_axis_v3.py", line 310, in main
    protA=read_PDB(struct,ch1,s1,e1)
  File "../../principal_axis_v3.py", line 104, in read_PDB
    chain=model[ch]
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Bio/PDB/Entity.py", line 38, in __getitem__
    return self.child_dict[id]
KeyError: 'A'

我尝试更改 child.dict 中的键,但出现另一个错误:

Traceback (most recent call last):
  File "../../principal_axis_v3.py", line 319, in <module>
    main()
  File "../../principal_axis_v3.py", line 310, in main
    protA=read_PDB(struct,ch1,s1,e1)
  File "../../principal_axis_v3.py", line 102, in read_PDB
    model.child_dict.keys=["A","B"]
AttributeError: 'dict' object attribute 'keys' is read-only

如何添加链 ID?

最佳答案

您的错误是 child_list 不是具有链 ID 的列表,而是 Chain 对象 (Bio.PDB.Chain.Chain) 。您必须创建Chain 对象,然后将它们添加到结构中。一个蹩脚的例子:

from Bio.PDB.Chain import Chain

my_chain = Chain("C")
model.add(my_chain)

现在您可以访问模型child_dict:

>>> model.child_dict
{'A': <Chain id=A>, 'C': <Chain id=C>}
>>> model.child_dict["C"]
<Chain id=C>

关于python - 如何在pdb中添加链ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33364370/

相关文章:

python - 从多个数据源创建 DataFrame 时,我们应该使用 for 循环还是列表理解?

Python pandas : Assign label based on sorted values per row, 不包括 NaN

c++ - 用于呈现蛋白质带状图的 OpenGL 代码

python - 如何使用 python 脚本输出 .pdb 文件?

python - 如何确定一个 Python 函数是否是另一个函数的别名?

python - 使用 Python 将国际字符替换为基本拉丁字符的好方法是什么?

python - 将单个字母代码连同链编号一起转换为 3 个字母代码

python - 查找允许某些不匹配的子字符串的快速方法

biopython - 将 FASTA 转换为 GenBank

python - 如何从 pdb 文件中分别获取 X、Y 或 Z 坐标