如何在Jupyter Notebook中显示蛋白质数据银行(PDB)文件?

4

我尝试按照这篇文章的步骤,在Jupyter笔记本中显示PDB文档,但失败了:

import MDAnalysis as mda
import nglview as nv
from nglview.datafiles import PDB, XTC

u = mda.Universe(PDB, XTC)

protein = u.select_atoms('protein')

当我尝试执行以下操作时:

w = nv.show_mdanalysis(protein)
w

I get:

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-2-499e28f0ffd3> in <module>()
----> 1 w = nv.show_mdanalysis(protein)
      2 w

~/anaconda3/lib/python3.6/site-packages/nglview-0.4-py3.5.egg/nglview/__init__.py in show_mdanalysis(atomgroup, **kwargs)
    118     '''
    119     structure_trajectory = MDAnalysisTrajectory(atomgroup)
--> 120     return NGLWidget(structure_trajectory, **kwargs)
    121 
    122 

~/anaconda3/lib/python3.6/site-packages/nglview-0.4-py3.5.egg/nglview/__init__.py in __init__(self, structure, trajectory, representations, parameters, **kwargs)
    347         if parameters:
    348             self.parameters = parameters
--> 349         self.set_structure(structure)
    350         if trajectory:
    351             self.trajectory = trajectory

~/anaconda3/lib/python3.6/site-packages/nglview-0.4-py3.5.egg/nglview/__init__.py in set_structure(self, structure)
    372     def set_structure(self, structure):
    373         self.structure = {
--> 374             "data": structure.get_structure_string(),
    375             "ext": structure.ext,
    376             "params": structure.params

~/anaconda3/lib/python3.6/site-packages/nglview-0.4-py3.5.egg/nglview/__init__.py in get_structure_string(self)
    313                 "'MDAnalysisTrajectory' requires the 'MDAnalysis' package"
    314             )
--> 315         import cStringIO
    316         u = self.atomgroup.universe
    317         u.trajectory[0]

ModuleNotFoundError: No module named 'cStringIO'

2020年2月更新:如果您使用的库已经正确地更新到Python3,则我认为这不再是一个问题:python 3.x ImportError: No module named 'cStringIO',并且现在应该没问题了,因为Python2已被弃用。


nglview 0.4似乎已经过时了,最新版本在https://github.com/arose/nglview/releases上是1.1.4。(你的问题看起来像是没有正确配置在Python 2和Python 3下运行的代码。) - orbeckst
@orbeckst 我使用Python 3.x版本。但这是Fonda安装的。 - 0x90
在一个使用Python 3.6的conda环境中,我执行了conda install nglview命令,并且它从conda-forge channel下载了1.1.3-py36_0 conda-forge版本,同时也安装了jupyter 4.4.0。来自https://www.mdanalysis.org/2016/03/14/nglview/的示例按照预期工作。 - orbeckst
我在Python 3.x下运行。但这是Fonda安装的。也许默认的conda渠道携带了过时的nglview软件包? - orbeckst
1
你没有使用conda吗?至少从你的堆栈跟踪中看起来是这样的。你可以尝试使用conda remove nglview卸载nglview吗?如果失败了,那么这个包可能是通过pip或easy_install安装的。尝试pip remove nglview。如果仍然无法解决问题,请手动删除与nglview相关的所有内容。然后使用conda install -c conda-forge nglview。(我在Ubuntu 16.04.4和Python 3.6.4下尝试了conda安装,没有出现任何问题。) - orbeckst
1个回答

2
我会尝试通过conda(和Anaconda distribution)来安装干净的nglview:
尝试使用以下命令卸载nglview:
conda remove nglview

以防旧版本的存在。如果此conda-remove失败,则该软件包可能是pipeasy_installed安装的。尝试pip remove nglview。如果仍然没有帮助,您必须查找已安装的nglview软件包,并使用rm手动删除它,但我不想在这里放置复制和粘贴说明,因为这需要仔细查看文件。

一旦删除了所有nglview的痕迹,请使用condaconda-forge渠道安装最新版本:

conda install -c conda-forge nglview

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接