在化学信息学中,有时会判断化学分子中是否含有特定的图案(结结构)
如前所述,fingerprint的SMILES字符串经常用于表示分子。
SMARTS是SMILES语言的扩展,可用于构建查询。 就像文本语言的正则表达式。
的SMILES字符串可以是SMARTS字符串
接下来,展示了根据SMILES字符串定义分子,表示分子,强调与特定的SMARTS、模式一致的原子的方法
1 .引入基础模块fromrdkitimportchemfromrdkit.chem.drawimportmolstogridimage 2。 化学分子smiles_list=['CCCCC ',' CCNOCC ',' CCCS ',定义' CSC ' ] mol _ list=[ chem.molfromsmiles (x ) for x in smiles
4 .创建查询请求以查找由三个c原子组成的脂肪链
query=chem.molfromsmarts(CCC ) ) query
5 .查找匹配的match _ list=[ mol.getsubstructmatch (query ) for mol in mol_list]match_list输出(() 0、1、2 )、)、6 查询的结果确实符合我们的query。
6 .可视化请注意,此处仅第一个匹配项被高亮显示。
molstogridimage(mols=mol_list,highlightAtomLists=match_list,molsPerRow=4) )。
7 .在与特定模式匹配的分子SMARTS中,*可以代替任何原子。 示例:
query=chem.molfromsmarts(c*c ) ) match _ list=[ mol.getsubstructmatch ] query ) formolinmol_list]print ) mol
在SMARTS中,[]表示大括号中间的原子为n或c。 示例:
query=chem.molfromsmarts(c[n,C]C ) ) match _ list=[ mol.getsubstructmatch ] query ) formolinmol_list]ppt
8 .备注SMARTS还有其他复杂的功能,需要去谷歌。