请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 396|回复: 9

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

[复制链接]

1万

帖子

25

威望

1万

eV
积分
34183

管理员

公社社长

发表于 2018-9-6 04:08:01 | 显示全部楼层 |阅读模式
基于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/免费下载。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

评分

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

查看全部评分

北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

135

帖子

0

威望

658

eV
积分
793

Level 4 (黑子)

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

283

帖子

2

威望

2742

eV
积分
3065

Level 5 (御坂)

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

5

帖子

0

威望

176

eV
积分
181

Level 3 能力者

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

1万

帖子

25

威望

1万

eV
积分
34183

管理员

公社社长

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

只要有个标准结构,有个类似通式式的关系,写程序肯定能实现,只是技术层面的问题而已。我对这类体系特征不很清楚,还不好说
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

277

帖子

0

威望

873

eV
积分
1150

Level 4 (黑子)

真 掘墓者

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

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

135

帖子

0

威望

658

eV
积分
793

Level 4 (黑子)

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

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

66

帖子

0

威望

140

eV
积分
206

Level 3 能力者

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

1万

帖子

25

威望

1万

eV
积分
34183

管理员

公社社长

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

原理上应当可以实现自动随机构建,要是没别人提出过,提出个构建算法,就能发篇不错文章了
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

283

帖子

2

威望

2742

eV
积分
3065

Level 5 (御坂)

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

没有啊,狗哥 也很牛逼嘛
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

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

GMT+8, 2018-9-24 16:34 , Processed in 0.168124 second(s), 25 queries .

快速回复 返回顶部 返回列表