将分子名称转换为SMILES吗?

时间:2019-02-28 16:23:26

标签: python cheminformatics

我只是想知道,有什么方法可以将IUPAC或常用分子名称转换为SMILES?我想做到这一点,而不必使用在线系统手动转换每一个。任何输入将不胜感激!

对于背景,我目前正在使用python和RDkit,所以我不确定RDkit是否可以做到这一点,而我只是不知道。我当前的数据是csv格式。

谢谢!

4 个答案:

答案 0 :(得分:1)

RDKit无法将名称转换为SMILES。 Chemical Identifier Resolver可以转换名称和其他标识符(例如CAS No),并且具有API,因此您可以使用脚本进行转换。

from urllib.request import urlopen

def CIRconvert(ids):
    try:
        url = 'http://cactus.nci.nih.gov/chemical/structure/' + ids + '/smiles'
        ans = urlopen(url).read().decode('utf8')
        return ans
    except:
        return 'Did not work'

identifiers  = ['3-Methylheptane', 'Aspirin', 'Diethylsulfate', 'Diethyl sulfate', '50-78-2']

for ids in identifiers :
    print(ids, CIRconvert(ids))

输出

3-Methylheptane CCCCC(C)CC
Aspirin CC(=O)Oc1ccccc1C(O)=O
Diethylsulfate CCO[S](=O)(=O)OCC
Diethyl sulfate Did not work
50-78-2 CC(=O)Oc1ccccc1C(O)=O

答案 1 :(得分:1)

OPSIN(https://opsin.ch.cam.ac.uk/)是name2structure转换的另一种解决方案。

可以通过安装cli或通过https://github.com/gorgitko/molminer

使用它

(RDKit KNIME节点也使用OPSIN)

答案 2 :(得分:0)

接受的答案使用 Chemical Identifier Resolver,但由于某种原因,该网站对我来说似乎有问题,而且 API 似乎也很混乱。

所以另一种将微笑转换为 IUPAC 名称的方法是使用 PubChem python API,如果您的微笑在他们的数据库中,它可以工作

例如

#!/usr/bin/env python

import sys    
import pubchempy as pcp

smiles = str(sys.argv[1])
print(smiles)
s= pcp.get_compounds(smiles,'smiles')
print(s[0].iupac_name)

答案 3 :(得分:-1)

如果将第一行更改为:

从urllib2导入url打开

它应该适用于python 2.7