Blendero&openbabel绘制分子模型(一)
之前在这篇博客 看到了使用blender绘制分子模型,原理就是openbabel解析文件格式,写入json文件,然后读取文件中分子和化学键的位置来生成分子模型。openbabel可以解析文件,那直接用blender导入pdb也可以。
openbanel各发行版一般都有打包,直接下载安装即可。windoiws用户可以使用openbabelGUI ,openbabel转换文件格式的命令为
bash
$ obabel [-i <input-ID>] infile [-o <output-ID>] [-O outfile] [OPTIONS]
$ obabel -:"<SMILES string>" [-o <output-ID>] [-O outfile] [OPTIONS]
不同发行版命令可能不同,可能为babel或obabel。其中第一条命令使用文件输入,如xyz,mol等。或者也可以使用第二条命令输入SMI字符串 ,如果输入SMI想生成模型的话因为SMI没有原子的位置信息,需要使用 --gen3d
选项。以乙酰丙酮为例,使用SMICC(=O)CC(=O)C
bash
$ obabel -:"CC(=O)CC(=O)C" -O Acetylacetone.pdb --gen3d
会提示生成了一个模型,然后目录下多了一个Acetylacetone.pdb,cat一下:
bash
cat Acetylacetone.pd
COMPND UNNAMED
AUTHOR GENERATED BY OPEN BABEL 3.1.0
HETATM 1 C UNL 1 2.703 0.963 -1.120 1.00 0.00 C
HETATM 2 C UNL 1 2.553 -0.086 -0.048 1.00 0.00 C
HETATM 3 O UNL 1 1.730 -0.997 -0.161 1.00 0.00 O
HETATM 4 C UNL 1 3.350 0.079 1.221 1.00 0.00 C
HETATM 5 C UNL 1 4.846 0.047 1.053 1.00 0.00 C
HETATM 6 O UNL 1 5.394 -0.095 -0.037 1.00 0.00 O
HETATM 7 C UNL 1 5.670 0.213 2.305 1.00 0.00 C
HETATM 8 H UNL 1 2.028 0.737 -1.950 1.00 0.00 H
HETATM 9 H UNL 1 3.722 0.981 -1.507 1.00 0.00 H
HETATM 10 H UNL 1 2.439 1.942 -0.711 1.00 0.00 H
HETATM 11 H UNL 1 3.074 -0.733 1.903 1.00 0.00 H
HETATM 12 H UNL 1 3.060 1.030 1.681 1.00 0.00 H
HETATM 13 H UNL 1 5.025 0.326 3.180 1.00 0.00 H
HETATM 14 H UNL 1 6.291 1.107 2.211 1.00 0.00 H
HETATM 15 H UNL 1 6.297 -0.672 2.443 1.00 0.00 H
CONECT 1 2 8 9 10
CONECT 2 1 3 3 4
CONECT 3 2 2
CONECT 4 2 5 11 12
CONECT 5 4 6 6 7
CONECT 6 5 5
CONECT 7 5 13 14 15
CONECT 8 1
CONECT 9 1
CONECT 10 1
CONECT 11 4
CONECT 12 4
CONECT 13 7
CONECT 14 7
CONECT 15 7
MASTER 0 0 0 0 0 0 0 0 15 0 15 0
END
剩下的就很简单了,blender开启pdb导入插件,导入生成的pdb,可用选项如下图所示
可用选项
Type of ball
选择原子用nurbs还是用网格表示,如果用网格可以在下面更改经纬球的分辨率
Scaling factors
原子大小和原子间距,默认1较小接近比例模型,想要球棍模型可以适当调大
Stick/bonds
化学键选项,建议勾选Bonds,可以生成双键和三键,否则只有单键。
可以点最上面的+号保存预设,下次直接调用。最后生成的模型如下图:
模型
生成的模型可能需要清理一下多余的面,可以参考这个视频
文章作者: 金葵