各位同学好呀,我们免费的课程即将进入尾声了,感谢大家的关注与陪伴。与我们之前几节课一样,如果要使用 iCN3D 模块,我们就需要将 iCN3D 加载到 Jupyter Notebook 中。(请注意使用库的确切名称哦,全部采用小写字母。)
import icn3dpy大家如果出现报错 No module named ‘icn3dpy' 不要着急,是因为我们没有进行安装。大家可以通过 pip 进行安装(还不知道怎么安装的小伙伴可以看之前的课程复习一下):
!pip install icn3dpy
Tip:
大家在安装的时候,是不是特别的慢。没有关系,我们可以在命令行中使用 pip install 时,直接添加 -i 参数指定镜像源。
比如我们可以使用代码
!pip install icn3dpy -i https://pypi.tuna.tsinghua.edu.cn/simple
以下是一些常用的 Python 包管理工具 pip 的镜像源地址:
清华大学开源软件镜像站:
https://pypi.tuna.tsinghua.edu.cn/simple
阿里云镜像:
https://mirrors.aliyun.com/pypi/simple/
中国科技大学镜像站:
https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣镜像:
https://pypi.douban.com/simple/
(注意:豆瓣镜像有时会不稳定)
腾讯云镜像:
https://mirrors.cloud.tencent.com/pypi/simple
华为云镜像:
https://repo.huaweicloud.com/repository/pypi/simple
安装好之后,我们就可以进行蛋白质结构的查看了。我们可以简单地 icn3dpy.view 命令时提供的默认表示形式加载 PDB 结构。我们来尝试查看一下 1a0j 这个蛋白,我们输入“pdbid = 1a0j” (大家有自己感兴趣的蛋白都可以查看只需要替换 PDB_ID 即可)。
import icn3dpyscene=icn3dpy.view(q='pdbid=1a0j')scene

我们现在可以看到3D的结构了,但是其实这里没有提供真正的优势,对于代码来说,创建一些变量和函数,可以使我们能够使用简单的命令快速生成许多不同PDB条目的所需视图。
让我们从变量开始。icn3dpy.view()命令需要在语句中定义变量 q。
用变量替换 'pdbid=1a0j' 字符串,比如我们如果想查看8gch,可以使用以下代码:
ID = 'pdbid=8gch'scene = icn3dpy.view(q=ID)scene

对于高级的使用人员,单单看到结构一定是不行的。我们可以向 icn3dpy.view 函数添加命令来创建不同的视图。
比如我们可以更改外观:
ID = 'pdbid=8gch'scene = icn3dpy.view(q='pdbid=1mbo', command = 'style proteins cylinder and plate')scene

ID = 'pdbid=8gch'scene = icn3dpy.view(q='pdbid=1mbo', command = 'style proteins cylinder and plate; style chemicals ball and stick')scene

想要更加直观,在写程序的时候可以使用一些变量替换。大家可以对比一下面两段代码的区别。
ID = 'pdbid=1mbo'cpl = '; style proteins cylinder and plate'bns = '; style chemicals ball and stick'scene = icn3dpy.view(q=ID, command = cpl + bns)scene
ID = 'pdbid=4hhb'cpl = '; style proteins cylinder and plate'bns = '; style chemicals ball and stick'scene = icn3dpy.view(q=ID, command = cpl + bns)scene
其实如果各位小伙伴觉得代码麻烦,可以点击 iCN3D 菜单图标进行点击操作。(再重复一下,代码的优势在于批量处理,现在的目的是让大家了解原理)。
如何批量处理呢,我们在非线性回归第2部分的时候有使用过函数。我们也在今天的案例中尝试一下。
我们可以定义一个函数myview1,它的作用是接受一个PDB ID,利用 icn3dpy 库来生成一个 3D 可视化场景,并按照指定的样式和参数来显示结构。返回的 scene 对象可以用来在Jupyter Notebook或其他支持的环境中展示这个3D结构。
import icn3dpy #导入 icn3dpy 库def myview1(PDB_ID):# 定义一个名为 myview1 的函数,接受一个参数 PDB_ID# 这个参数 PDB_ID 是用来指定蛋白质数据库中的结构 IDPDB_ID = str(PDB_ID)# 将 PDB_ID 转换为字符串形式,确保它是一个字符串类型# 即使用户输入的是数字或其他类型,也会被转换成字符串scene = icn3dpy.view(# 使用 icn3dpy 模块中的 view 函数生成一个场景# 这个场景是一个 3D 结构的可视化表示q='mmdbafid=' + PDB_ID,# q 参数指定要查询的 ID,这里使用了用户传入的 PDB_IDcommand='load mmdb' + PDB_ID + '| parameters &mmdbid=' + PDB_ID +# command 参数指定了一系列要在 3D 结构上执行的命令# 这里的命令首先加载 PDB 数据库中的分子数据'&bu=1; defined sets; select sets chemicals; set background white; '# bu=1 表示显示生物学单元# 定义了分子集,选择化学分子集,将背景设为白色'style chemicals ball and stick; set surface wireframe on; '# 将化学分子(如配体)显示为球棒模型,将表面显示为线框'set surface wireframe on; style proteins cylinder and plate; '# 重复设置线框表面显示,并将蛋白质的显示样式设置为圆柱体和板状'style proteins cylinder and plate; defined sets; '# 再次设置蛋白质的显示样式,并定义分子集'select sets 1ETS; style proteins cylinder and plate; '# 选择特定的蛋白质集(这里是假设的 1ETS),并将其样式设置为圆柱体和板状'color secondary structure yellow|||'# 将二级结构的颜色设置为黄色'{"factor":"1.000","mouseChange":{"x":"0.000","y":"0.000"},'# 设置视图参数:缩放因子、鼠标位置变化(x 和 y 坐标)'"quaternion":{"_x":"0.000","_y":"0.000","_z":"0.000","_w":"1.000"}}'# 设置四元数(用于 3D 旋转的数学表示)来确定初始视角)return scene# 返回生成的 3D 结构场景,供进一步使用或显示
我们在使用的时候,只需要告诉这个函数PDB_ID是什么就可以了。我们来运行一下:
PDB_ID = '1ETS' # 也可以尝试其他的 PDB_ID 比如 1D66myview1(PDB_ID)


我们今天的代码可以帮助大家更快速、更直观、更多样化的查看蛋白质的 3D 结构,大家可以多多尝试。下一节课我们会尝试去探索更细致的部分,我们将关注到酶与配体,会使用 RCSB 搜索 API 来查找与特定酶类结合的配体。



沪公网安备 31011002003500