第9届北京科音基础(中级)量子化学培训班将于9月3~8日于北京举办,是已具备一定经验的量子化学研究者全面提升研究水平的极佳机会。报名将于8月19日开始,请点击此链接查看培训预告,欢迎参加!

计算化学公社

 找回密码 Forget password
 注册 Register
Views: 8293|回复 Reply: 14

[综合交流] 基于OpenBabel批量产生特定基团以任意方式接到苯上的结构的方法

[复制链接 Copy URL]

3万

帖子

99

威望

4万

eV
积分
84473

管理员

公社社长+计算化学玩家

发表于 Post on 2018-9-6 04:08:01 | 显示全部楼层 Show all |阅读模式 Reading model
基于OpenBabel批量产生特定基团以任意方式接到苯上的结构的方法

文/Sobereva@北京科音  2018-Sep-6

1 前言

最近在计算化学公社论坛有人问(http://bbs.keinsci.com/thread-10797-1-1.html),怎么自动产生一大批带有指定基团的取代苯,他希望CH3、H、CN、F、Cl、Br、I、OH基团以随机方式组合接到苯上面。我认为最简单的实现方式莫过于自己写个小程序产生各种取代苯的SMILES字符串,然后用OpenBabel产生三维结构,本文就介绍一下怎么实现。希望读者能举一反三,对于类似的问题也可以通过类似的方式解决。也有人提议通过把基团的三维结构直接拼接到苯上实现,但当基团是多个原子的时候,得考虑基团朝向问题,显然会比较麻烦。

SMILES是一种格式十分简单的描述分子结构的字符串,它在化学信息学里有重要的地位。比如苯酚的SMILES字符串表示为c1ccccc1(O)。SMILES只记录了原子间的连接关系,大部分分子都可以通过SMILES字符串来描述(而对于复杂的笼状体系就不太适合了)。如果对此不熟悉,请阅读https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system,里面对SMILES有十分简洁清晰的介绍。通常记录SMILES字符串的文件后缀为.smi。

OpenBabel是一款知名的化学文件格式转换程序,可以在http://sourceforge.net/projects/openbabel/免费下载。如果你是CentOS的用户,可以用yum install epel-release命令添加EPEL源之后用yum install openbabel命令直接装上。OpenBabel的还可以做基于力场的几何优化、加氢/去氢、合并/拆分文件、相似性对比、结构排序/对齐等。OpenBabel可以基于SMILES字符串通过CORINA算法快速、近似产生分子三维结构,因此只要把取代苯的SMILES字符串构建出来,即可通过OpenBabel得到三维结构。当然,这样得到的三维结构是很粗糙的,但作为像样的方法做几何优化的初猜结构是足够的。


2 产生各种取代苯SMILES字符串的代码

在搞懂SMILES字符串定义规则的前提下,稍微懂得编程的人都可以很容易地写出前述8种取代基以随机方式接到苯的六个位点的SMILES字符串的代码。以下是笔者用Fortran写的,由于很容易理解,就不再详细解释了。源代码文件和编译好的可执行文件可以在此下载:http://sobereva.com/attach/440/file.rar
  1. !A tool for generating SMILES strings of substituted benzene. Programmed by Sobereva, 2018-Sep-6
  2. program gensubben
  3. implicit real*8 (a-h,o-z)
  4. integer,parameter :: nsub=8
  5. character*10 :: sub(nsub)=(/ "(C)","","(C#N)","(F)","(Cl)","(Br)","(I)","(O)" /)
  6. character*100 string
  7. nmol=20 !The number of molecules to be generated

  8. CALL RANDOM_SEED()
  9. open(10,file="subben.smi",status="replace")
  10. do imol=1,nmol
  11.         ic=1
  12.         string=" "
  13.         do ipos=1,6
  14.                 if (ipos==1.or.ipos==6) then
  15.                         nlen=2
  16.                         string(ic:ic+1)="c1"
  17.                 else
  18.                         nlen=1
  19.                         string(ic:ic)="c"
  20.                 end if
  21.                 ic=ic+nlen
  22.                 CALL RANDOM_NUMBER(ran)
  23.                 isub=int(ran*nsub)+1
  24.                 nlen=len_trim(sub(isub))
  25.                 string(ic:ic+nlen-1)=trim(sub(isub))
  26.                 ic=ic+nlen
  27.         end do
  28.         write(10,"(a)") trim(string)
  29.         write(*,*) trim(string)
  30. end do
  31. close(10)

  32. write(*,*) "subben.smi has been generated in current folder, press ENTER button to exit"
  33. read(*,*)
  34. end program
复制代码

启动程序后,此程序就会产生以随机方式产生20个取代苯,SMILES字符串既输出到屏幕上,也输出到当前目录下的subben.smi中。每次运行时产生的SMILES字符串都不同,以下是某此运行时产生的字符串中的前五个:
c1(Cl)c(I)c(F)c(C#N)cc1(O)
c1(I)cc(F)cc(C)c1
c1(F)cc(O)c(I)c(Br)c1(O)
c1(O)c(Cl)c(Br)c(I)c(F)c1(Br)
c1c(C#N)c(O)cc(F)c1(I)
c1(C#N)c(F)c(Br)c(Br)c(F)c1(O)


3 通过OpenBabel批量把SMILE字符串转化为三维结构

首先去OpenBabel官网下载安装包然后安装。安装后就可以在操作系统的命令行模式下(对于Windows指的是cmd或powershell)直接通过obabel命令调用了。虽然此程序也有图形界面,但用着还不如命令行模式方便。此程序的常用命令在这里有介绍:https://open-babel.readthedocs.io/en/latest/Command-line_tools/babel.html

把上一节自写的程序产生的subben.smi放到当前目录下,在命令行模式下输入obabel subben.smi -O out.pdb --gen3d -m,马上就在当前目录下产生了out1.pdb、out2.pdb ... out20.pdb,这就是20种取代苯结构了。命令行中的--gen3d代表自动产生三维结构,-m代表进行拆分。

产生的这些结构可以拖到VMD中,然后用Extensions - Visualization - Multiple Molecule animation轮回显示,如下所示


如果你想在产生三维结构的时候顺带通过MMFF94高精度有机小分子力场进行优化,那么运行以下命令即可,所得的pdb文件里的结构就都是优化过的了。
obabel subben.smi -O out.pdb --gen3d -m --minimize --ff MMFF94

评分 Rate

参与人数
Participants 6
eV +28 收起 理由
Reason
guoy14iccas + 3 涨知识了
winterzen + 5 赞!
xpyp + 5 赞!
wangyj + 5 谢谢
captain + 5 谢谢
wbn + 5 涨知识了

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班。这些培训是计算化学快速入门以及全面系统性提升研究水平的最佳途径,培训各种相关信息见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

210

帖子

0

威望

1585

eV
积分
1795

Level 5 (御坂)

发表于 Post on 2018-9-6 08:06:46 | 显示全部楼层 Show all
Sob,若已知无定型物质的元素百分含量,并且知道芳环比,而且知道像-OH,-COOH等一些基团的存在,可不可以通过编程确定无定型物质的三维网状结构,若能实现,意义非凡。
越努力越幸运!

327

帖子

2

威望

4172

eV
积分
4539

Level 6 (一方通行)

发表于 Post on 2018-9-6 08:28:47 | 显示全部楼层 Show all
老牛逼了。
不过操作smiles还是不太方便

8

帖子

0

威望

443

eV
积分
451

Level 3 能力者

发表于 Post on 2018-9-6 11:09:54 | 显示全部楼层 Show all
simplified molecular-input line-entry system (SMILES)
严谨一些应该是SMILES而不是SMILE

3万

帖子

99

威望

4万

eV
积分
84473

管理员

公社社长+计算化学玩家

 楼主 Author| 发表于 Post on 2018-9-6 12:06:45 | 显示全部楼层 Show all
xylz6188 发表于 2018-9-6 08:06
Sob,若已知无定型物质的元素百分含量,并且知道芳环比,而且知道像-OH,-COOH等一些基团的存在,可不可以 ...

只要有个标准结构,有个类似通式式的关系,写程序肯定能实现,只是技术层面的问题而已。我对这类体系特征不很清楚,还不好说
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班。这些培训是计算化学快速入门以及全面系统性提升研究水平的最佳途径,培训各种相关信息见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

349

帖子

0

威望

1885

eV
积分
2234

Level 5 (御坂)

真 掘墓者

发表于 Post on 2018-9-6 12:14:05 | 显示全部楼层 Show all
greatzdk 发表于 2018-9-6 08:28
老牛逼了。
不过操作smiles还是不太方便

有什么是你见过不牛逼的没
圣诞刨坟忙

210

帖子

0

威望

1585

eV
积分
1795

Level 5 (御坂)

发表于 Post on 2018-9-6 14:36:22 | 显示全部楼层 Show all
sobereva 发表于 2018-9-6 12:06
只要有个标准结构,有个类似通式式的关系,写程序肯定能实现,只是技术层面的问题而已。我对这类体系特征 ...

比如现在大家所探索的煤分子结构、干酪根结构、沥青质结构,这些物质由特定的元素组成,但是结构极为复杂,没有统一的化学式,但研究有极为需要了解他们的结构。
越努力越幸运!

985

帖子

0

威望

3162

eV
积分
4147

Level 6 (一方通行)

发表于 Post on 2018-9-6 19:38:06 来自手机 | 显示全部楼层 Show all
简单说就是生成拓扑结构

3万

帖子

99

威望

4万

eV
积分
84473

管理员

公社社长+计算化学玩家

 楼主 Author| 发表于 Post on 2018-9-7 02:41:55 | 显示全部楼层 Show all
granvia 发表于 2018-9-6 19:38
简单说就是生成拓扑结构

原理上应当可以实现自动随机构建,要是没别人提出过,提出个构建算法,就能发篇不错文章了
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班。这些培训是计算化学快速入门以及全面系统性提升研究水平的最佳途径,培训各种相关信息见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

327

帖子

2

威望

4172

eV
积分
4539

Level 6 (一方通行)

发表于 Post on 2018-9-8 11:48:29 | 显示全部楼层 Show all
kyuu 发表于 2018-9-6 12:14
有什么是你见过不牛逼的没

没有啊,狗哥 也很牛逼嘛

254

帖子

0

威望

1897

eV
积分
2151

Level 5 (御坂)

计算化学路人甲

发表于 Post on 2019-8-8 20:21:40 | 显示全部楼层 Show all
社长是不是补充一下Openbabel的安装编译过程

3万

帖子

99

威望

4万

eV
积分
84473

管理员

公社社长+计算化学玩家

 楼主 Author| 发表于 Post on 2019-8-9 04:09:08 | 显示全部楼层 Show all
Novice 发表于 2019-8-8 20:21
社长是不是补充一下Openbabel的安装编译过程

对于CentOS,添加了EPEL源之后,yum install openbabel直接就装上了

评分 Rate

参与人数
Participants 1
eV +3 收起 理由
Reason
Novice + 3 谢谢,后会用了Ubuntu

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班。这些培训是计算化学快速入门以及全面系统性提升研究水平的最佳途径,培训各种相关信息见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

260

帖子

9

威望

1598

eV
积分
2038

Level 5 (御坂)

发表于 Post on 2022-1-13 11:24:34 | 显示全部楼层 Show all
请问下sob老师,在Extensions - Visualization - Multiple Molecule animation里是怎么保存动画的,我怎么没找到相应的选项?
之前碰到了一个问题,如何去制作一个仅含5帧结构的xyz文件的动画,因为在make movie中没法调整播放的延迟,后来想了个法子将这5帧中插入很多重复帧就可以把make movie的播放速度降下来了。
自由发挥,野蛮生长

1185

帖子

5

威望

2723

eV
积分
4008

Level 6 (一方通行)

发表于 Post on 2022-1-13 11:31:23 | 显示全部楼层 Show all
丁越 发表于 2022-1-13 11:24
请问下sob老师,在Extensions - Visualization - Multiple Molecule animation里是怎么保存动画的,我怎么 ...

还有个方法就是写脚本每帧截图或渲染,然后得到一个一堆图片的目录,之后可以使用这里的第一个脚本。这里面也有调每帧时长的参数。http://bbs.keinsci.com/thread-27212-1-1.html

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
丁越 + 5 谢谢

查看全部评分 View all ratings

3万

帖子

99

威望

4万

eV
积分
84473

管理员

公社社长+计算化学玩家

 楼主 Author| 发表于 Post on 2022-1-13 14:31:44 | 显示全部楼层 Show all
丁越 发表于 2022-1-13 11:24
请问下sob老师,在Extensions - Visualization - Multiple Molecule animation里是怎么保存动画的,我怎么 ...

ffmpeg把图像文件合并成动画时直接设置就完了

Clipboard01.png

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
丁越 + 5 谢谢

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班。这些培训是计算化学快速入门以及全面系统性提升研究水平的最佳途径,培训各种相关信息见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )

GMT+8, 2022-8-15 08:26 , Processed in 0.243222 second(s), 28 queries .

快速回复 返回顶部 返回列表 Return to list