为什么Bio.PDB.MMCIF2Dict()会丢失?

时间:2013-12-04 19:06:22

标签: python python-module biopython

我正在尝试按照The Biopython Structural Bioinformatics FAQ的提示,查看我可以从PDB文件中获取多少“标题”信息。我被引导使用mmCIF版本。但是包/鸡蛋似乎有点奇怪:

>>> from Bio.PDB import *
>>> cifFile = '.../path2/3VQ8.cif'
>>> mmcif_dict = MMCIF2Dict(cifFile)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'MMCIF2Dict' is not defined

如果我完全符合课程资格,我会收到不同的错误:

>>> import Bio.PDB
>>> mmcif_dict = Bio.PDB.MMCIF2Dict(cifFile)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'MMCIF2Dict'

请注意,大多数Bio.PDB都按预期工作:

>>> parser=PDBParser(PERMISSIVE=1)
>>> inf = '.../path2/3NF8.pdb'
>>> structure=parser.get_structure('3Nf8',inf)
>>> structure.header.keys()
['structure_method', 'head', 'journal_reference', 'compound',
 'name', 'author', 'deposition_date', 'release_date', 'source',
 'resolution', 'structure_reference']

我最近有一个版本:

>>> Bio.__version__
'1.61'
的文件是否在Bio egg中,但MMCIF2Dict.py不在模块中:

MMCIF2Dict

任何人都有线索?

1 个答案:

答案 0 :(得分:0)

您可以在Bio.PDB's __init__.py找到答案。

简而言之,from Bio.PDB import *会导入__init__.py命名空间中的所有内容。如果您阅读__init__.py,则可以看到it imports MMCIFParser,但 MMCIF2Dict(至少不是直接):MMCIFParser imports MMCIF2Dict并使用它那里。

所以,如果你from Bio.PDB import MMCIF2Dict; mmcif_dict = MMCIF2Dict.MMCIF2Dict(cifFile),它应该没有抱怨。但是,from Bio.PDB import *不会将MMCIF2Dict放入当前命名空间。