Python 使用MMCIF2Dict解析CIF文件时出现问题

Python 使用MMCIF2Dict解析CIF文件时出现问题,python,biopython,Python,Biopython,我编写了一个脚本来检索和处理蛋白质数据库中的信息。 我从Bio.PDB.MMCIF2Dict导入MMCIFDict模块,该模块允许解析字典中的CIF数据。 它几乎适用于我列表中的所有结构,但我不知道为什么,对于某些结构,它崩溃了。 例如,对于PDBid 4asd,它返回键而不是值,返回值而不是键。这就像解析器翻转键和值的属性一样 我找到的唯一解决方案是检查MMCIFDict模块生成的字典中的预期键是否存在。如果没有,我必须在相应字典的所有值中找到它 import urllib.request f

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

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

import urllib.request
from Bio.PDB.MMCIF2Dict import MMCIF2Dict
设置pdb id的列表。这里是4asd的示例 检索数据 创建字典 我所期望的是: 我所拥有的: 期望的键不是键,而是期望值的值,该值现在是键(希望我没有丢失您):


提前感谢您的帮助

传递给
MMCIF2Dict
的是字符串列表,而根据 论据应该是:

file-PDB文件或打开的文件句柄的名称

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


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

从gemmi进口到岸价
导入urllib.request
pdb='4asd'
使用urllib.request.urlopen(f'https://files.rcsb.org/header/{pdb}.cif')作为c:
doc=cif.read\u字符串(c.read())
分类目录=单据[0]。获取分类目录(“实体目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录”
断言类别[pdbx\U基因[U src\U科学名称]==['HOMO SAPIENS']

您能否为测试提供工作登录?另外,您是否可以跟踪工作和非工作文件的“_audit_conform.dict_version”值?如果您的pdb='4kik',它将返回“_entity_src_gen.pdbx_gene_src_scientific_name”的正确值,这在本例中是['Homo sapiens','Homo sapiens']。当pdb='4kik4时,dico[“\u audit\u conform.dict\u version”]返回:“5.279”。对于无法正常工作的结构,它重新运行:“5.308”是另一个可用的解析器,没有太多文档
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'