DeepSMILES: An adaptation of SMILES for use in machine-learning of chemical strc

424 阅读2分钟

本人已参与【新人创作礼】活动,一起开启掘金创作之路。

论文名称:DeepSMILES: An adaptation of SMILES for use in machine-learning of chemical structures 论文地址:chemrxiv.org/engage/chem… 论文作者:Noel M O’Boyle, Andrew Dalke

Who?

英国和瑞典两个研究员的工作

What?

  1. DeepSMILES只用一个编号表示环而不是两个,从而避免出现匹配不上的编号
  2. DeepSMILES不再用成对括号,而是用单个后缀括号替代,避免匹配不上括号

Why?

SMILES太容易生成不合法分子了

How?

首先SMILES表示环用的是断开某个键加上编号的方式表示,这里把最开始的叫做开环符号,标志环的结束叫做闭环符号。

把What里的具体来看:

环的处理

简单来说就是用环的长度作为编号,加在闭环的原子后面,如果超过9就表示成%N,如果超过99就用括号括起来%(N)

比如苯环c1ccccc1,用DeepSMILES就是cccccc6

假如环上带了分支,SMILES是按照深度优先搜索表示的分子,所以可能出现c1c(F)cccc1c1c(cccc1)F。如果用DeepSMILES表示就是cc(F)cccc6cc(cccc6)F。这里有两个点值得说,一个是DeepSMILES并没有改变SMILES表示分子的方式(DFS);一个是SMILES在这里看不出来环的长度(开环和闭环在两种表示下的距离分别为6和7),而DeepSMILES可以看出来。

括号的处理

参考逆波兰记法,但是简单粗暴的多。

SMILES的括号里有几个原子,DeepSMILES就在这些原子后面加上同样个数的右括号。。。

比如,SMILES里的C(OF)C 变成 COF))C

B(c1ccccc1)(O)O 变成 Bcccccc6))))))O)O

实验结果 作者在各个数据集都进行了roundtrip test,即从SMILES变成DeepSMILES,再变回去,全部都可以完全恢复。(原来RDKit什么的都是规范化的SMILES)

另外关于转换前后长度的影响也有统计: image.png