||
SMILES是用文本来表示化学结构最常用的工具之一,比InCHi更直观,很适合在不具备特定软件的条件下传播化学结构。
我以前的有篇博客《漫淡化学结构的文本表示法SMILES》中讲过如何根据结构式找出它的SMILES,并顺便讲了下ChemFinder中一个非常罕用的脚本语言CAL的一些简单例子。 今天再补一下讲如何绘制复杂一点的分子。但总体上仍是简单的,没有涉及立体构型,更多的是讨论有多个环时如何标记。
SMILES的基本思路,还是用一段线性的文本(即字符串)来表示化学结构,如果碰到化学结构中有环的,就在某个地方打断,断开的两个地方做上同样的数字标记;所有的分支都如此处理,将分支的结构写得圆括号内。
简单的例子,如乙醇是CCO, 乙酸乙酯是CC(=O)OCC,直接从一头展开到另一头就可以了。复杂一点的,如环已烷,将环上某一根键打断,两端的两个碳原子都标记为C1,得到C1CCCCC1,也比较简单。
我们现在知道了,编写SMILES时并没有规定从哪个地方开始,因此不同的起点,走不同的解析路径,得到的字串也不一样。因此一般的SMILES是不能直接用来比较化学结构的。
如果采取某种特殊的算法,能够找出唯一的合法的SMILES表达式,这样的字串就可以用来比较两个分子的结构是否相同,是否有共同的某个基团或电荷数,等等。或者是对应某个物质的CAS有一个特定的SMILES等等。这样的SMILES称为规范SMILES(Canonical SMILES). 具体实现的算法有Morgan算法或类似的CANGEN算法等。如果只用于传递结构而不作比较对比等,随便哪个形式的都可以,软件解析并不挑剔,只要符合解析要求就行。
这里我们以一种锂电池电解液添加剂GS(乙二醛二硫酸酯)的结构为例,这种又叫骈二硫酸乙烯酯,即两个DTD的分子共用一根单键,形成两个骈环。这个比单个环的分子结构要复杂一点。以下图1~3展示了如果将这个结构的环打断变成线型链的。
图1有两个环,因此至少需要打断两根键才能拆成链状。图上银灰色键为我选定的打断位置。
第1次将左上角的一根键打断(即将键拆开,键消失,但两端的原子保留),成键的两个原子都标上数字1。打断的键在图上用灰色线表示。红色线为拆解的“路径”,支链(包括单个原子的伸出键)写在括号内。
第2次打断的键是右下角的一根键,两个原子都标上数字2.
从标记为1的氧原子开始书写,沿着红色线一路拆解,不要忘记支链,有两个取代基或伸出键就写两对圆括号,如下,以下的箭头是增加可读性的,最终去除:
O1→S(=O)(=O)→O→C2→C1→O→S(=O)(=O)→O2
走到O2这里就结束了,不能再前进,否则C2这个原子就重复计算了。
去除上面的箭头,就可以得到图1的SMILES。 输入到支持SMILES解析的软件中就可以产生结构了。
对于多环结构来讲,先画出解析的路线,选定打断的位置很重要。打断时做好标记,这样生成SMILES就不乱了。
图2的走法也是可以的,不过起点同时要打断两根键,因此它即标记为1,也标记为2,因此最后记录成C12。
这里有个有技巧,当序号数小于10时(多数情况下不会超过10)多个序号可以合并写在一起。如果有数字超过了10,所有数字前要用%标记一下,以防止无法识别。举例来说,如果你将打断的键的数字分别标识为11, 22,则得到了以下形式的SMILES,也可以正常解析。 当然这种2个环的结构,不建议你标这么大。
C%11%22OS(=O)(=O)OC%11OS(=O)(=O)O%22
为了讲解,图4~6随便画了一个三个环的结构,图5与图6是相同的结构,走不同的路线解析。这两个图中支链也成环了,解析时也要打破环的结构并做上标记。这个看起来很复杂,多练几次就会理解,其实很简单的。
下面再借用日光化学网站上的一个案例(他们有SMILES完整的理论介绍,请点击或下载),演示一下立方烷的SMILES如何写出来的。先构思最长的拆解链条,再沿路线逐个打破并做好数字标记,再连接起来即可。
最后是褪黑激素的结构,一种用于改善睡眠的物质。起点随便选,路径也不一定都要走最长的,遇到一个支链建议先预留出来一对圆括号占位,等回来再补上括号内的结构.
主链最后一个原子标记为2, 由于末尾打破的是双键,需要保留双键这个信息, 它的写法要调整一下,写成C=2,表示是一个碳原子,通过双键连接到2位上. 这样写出来的SMILES你再还原看看,应该没问题了.
解析出来的SMILES也可以在这个网站上验证一下。这就是之前介绍过的SmilesDrawer,一个Javascript写的SMILES到结构的解析工具,虽然有的地方做得还不够完美。
https://doc.gdb.tools/smilesDrawer/sd/example/index_light.html
最后说两个SMILES中的冷知识, 1)文本串中不允许有空格, 2)分离的结构,他们的SMILES用实心句点连接. 比如是离子型化合物,或者两个独立的化合物.他们的SMILES要放在一起时,就用 . 分开即可
扩展阅读: OpenSmiles,一种开放的非商业化的SMILES扩展.
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-28 00:59
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社