本人已参与【新人创作礼】活动,一起开启掘金创作之路。
论文名称: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?
- DeepSMILES只用一个编号表示环而不是两个,从而避免出现匹配不上的编号
- DeepSMILES不再用成对括号,而是用单个后缀括号替代,避免匹配不上括号
Why?
SMILES太容易生成不合法分子了
How?
首先SMILES表示环用的是断开某个键加上编号的方式表示,这里把最开始的叫做开环符号,标志环的结束叫做闭环符号。
把What里的具体来看:
环的处理
简单来说就是用环的长度作为编号,加在闭环的原子后面,如果超过9就表示成%N,如果超过99就用括号括起来%(N)
比如苯环c1ccccc1,用DeepSMILES就是cccccc6
假如环上带了分支,SMILES是按照深度优先搜索表示的分子,所以可能出现c1c(F)cccc1 和c1c(cccc1)F。如果用DeepSMILES表示就是cc(F)cccc6 和cc(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)
另外关于转换前后长度的影响也有统计: