从电子显微镜结构中提取链

萨登

我需要从结构文件中cif以PDB可用的格式提取单链我已经阅读了几个相关的问题,例如thisthis如果链ID是整数或单个字符,则建议的解决方案确实可以很好地工作。如果将其应用于6KMW之类的结构以提取链,aA则会引起错误TypeError: %c requires int or char完整的代码,用于再现下面的错误和输出。

from Bio.PDB import PDBList, PDBIO, FastMMCIFParser, Select

class ChainSelect(Select):
    def __init__(self, chain):
        self.chain = chain
    def accept_chain(self, chain):
        if chain.get_id() == self.chain:
            return 1
        else:          
            return 0
        
pdbl = PDBList()
io = PDBIO()
parser = FastMMCIFParser(QUIET = True)

pdbl.retrieve_pdb_file('6kmw', pdir = '.', file_format='mmCif')
structure = parser.get_structure('6kmw', '6kmw.cif')
io.set_structure(structure)
io.save('6kmw_aA.pdb', ChainSelect('aA'))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-095b98a12800> in <module>
     18 structure = parser.get_structure('6kmw', '6kmw.cif')
     19 io.set_structure(structure)
---> 20 io.save('6kmw_aA.pdb', ChainSelect('aA'))

~/miniconda3/envs/lab2/lib/python3.8/site-packages/Bio/PDB/PDBIO.py in save(self, file, select, write_end, preserve_atom_numbering)
    368                                     )
    369 
--> 370                             s = get_atom_line(
    371                                 atom,
    372                                 hetfield,

~/miniconda3/envs/lab2/lib/python3.8/site-packages/Bio/PDB/PDBIO.py in _get_atom_line(self, atom, hetfield, segid, atom_number, resname, resseq, icode, chain_id, charge)
    227                 charge,
    228             )
--> 229             return _ATOM_FORMAT_STRING % args
    230 
    231         else:

TypeError: %c requires int or char

有谁知道Biopython的功能来达到目的?最好不要依赖于通过自定义函数解析整个文件的文件。

莉迪亚·范·戴克(Lydia van Dyke)

我认为,您要实现的目标是不可能的。实际上,您要将cif文件转换为pdb文件。您可以在此过程中将蛋白质结构还原为单链,这并不重要。PDB格式是上个世纪的文件格式。(我知道到目前为止它的传播程度...)它是面向列的,并且只允许一个字符作为链ID。这就是无法下载蛋白质6KMW的PDB文件的原因。有关以下信息,请参见https://www.rcsb.org/structure/6KMW上的工具提示:“ PDB格式文件不适用于大型结构”。在您的情况下,“大”是指具有太多链的蛋白质,它们需要两个字符。

您不能将两个字符存储为PDB文件的链名。您现在有两个选择:

  • 重命名链“ aA”并将文件保存为PDB格式
  • 不要将PDB格式用作文件格式,而要坚持使用CIF

此代码段重命名了链,并将结构存储为pdb文件:

[...]
io.set_structure(structure)
for model in structure:
    for chain in model:
        if chain.get_id() == "A":
            chain.id = "_"
            print("renamed chain A to _")
        if chain.get_id() == "aA":
            chain.id = "A"
            print("renamed chain aA to A")

io.save('6kmw_aA.pdb', ChainSelect('A'))

此代码段仅存储mmCIF格式的链“ aA”:

from Bio.PDB.mmcifio import MMCIFIO

io = MMCIFIO()

io.set_structure(structure)
io.save("6kmw_aA.cif", ChainSelect('aA'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

流星显微镜激活光标

来自分类Dev

流星显微镜激活光标

来自分类Dev

如何安装 Microdia UVC 显微镜?

来自分类Dev

流星中的制表键-了解显微镜示例

来自分类Dev

显微镜图像分割:用python进行细菌分割

来自分类Dev

流星中的制表键-了解显微镜示例

来自分类Dev

我的USB显微镜停止工作

来自分类Dev

去除显微镜拍摄的图像中的条纹图案

来自分类Dev

如何使用db15输入套接字将命令从Python 3.4发送到电动XY显微镜载物台

来自分类Dev

从结构数组中提取行

来自分类Dev

从电子邮件中提取证书

来自分类Dev

从网页中提取隐藏的电子邮件

来自分类Dev

从标题中提取电子邮件

来自分类Dev

如何从文件中提取电子邮件?

来自分类Dev

如何从pdf中提取电子邮件

来自分类Dev

从卸载模块的pdb中提取结构信息

来自分类Dev

从SqlException中提取结构化信息

来自分类Dev

从结构中提取和组织价值

来自分类Dev

如何从Openstreetmap中提取位置层次结构?

来自分类Dev

如何从结构数组中提取数组?

来自分类Dev

从字符串中提取层次结构

来自分类Dev

从固定的JSON结构中提取密钥名称

来自分类Dev

从复杂的文件结构中提取数据

来自分类Dev

如何从结构数组中提取数组?

来自分类Dev

从平面列表中提取嵌套的对象结构

来自分类Dev

从满足条件的结构中提取值

来自分类Dev

在R中提取社交网络结构

来自分类Dev

从结构不良的XML文件中提取数据

来自分类Dev

从 ODP 或 ODF 文件中提取结构数据