gpt4 book ai didi

python - 使用 MMCIF2Dict 解析 CIF 文件的问题

转载 作者:行者123 更新时间:2023-12-05 06:24:27 27 4
gpt4 key购买 nike

我编写了一个脚本来检索和处理蛋白质数据库中的信息。我从 Bio.PDB.MMCIF2Dict 导入 MMCIFDict 模块,它允许在字典中解析 CIF 数据。它适用于我列表中的几乎所有结构,但我不知道为什么,对于某些结构,它会崩溃。例如对于 PDBid 4asd,它返回键而不是值,返回值而不是键。这就像解析器翻转键和值的属性。

我找到的唯一解决方案是检查 MMCIFDict 模块生成的字典中的预期键是否存在。如果没有,我必须在相应字典的所有值中找到它。

import urllib.request
from Bio.PDB.MMCIF2Dict import MMCIF2Dict

设置pdb id列表。这是一个 4asd 的例子

pdb_list = ['4asd']

获取数据

cif_webpage = urllib.request.urlopen(f'https://files.rcsb.org/header/{pdb}.cif').read().decode('utf-8').split('\n')

创建字典

dico = MMCIF2Dict(cif_webpage)

我的期望:

dico['_entity_src_gen.pdbx_gene_src_scientific_name'] == 'HOMO SAPIENS'

我有什么:

KeyError: '_entity_src_gen.pdbx_gene_src_scientific_name'

期望键不是键而是期望值的值现在是键(希望我没有弄丢你):

dico['HOMO SAPIENS'] == '_entity_src_gen.pdbx_gene_src_scientific_name'

预先感谢您的帮助!

最佳答案

你传递给 MMCIF2Dict 的是一个字符串列表,而根据 docs参数应该是:

file - name of the PDB file OR an open filehandle

我下载了 header/4asd.cif 并验证了如果参数是文件句柄它可以正常工作。


或者,您可以使用 gemmi解析 CIF 文件(免责声明:我正在做这个项目)

from gemmi import cif
import urllib.request

pdb = '4asd'
with urllib.request.urlopen(f'https://files.rcsb.org/header/{pdb}.cif') as c:
doc = cif.read_string(c.read())
category_dict = doc[0].get_mmcif_category('_entity_src_gen')
assert category_dict['pdbx_gene_src_scientific_name'] == ['HOMO SAPIENS']

关于python - 使用 MMCIF2Dict 解析 CIF 文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57586583/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com