10

我只是想知道,有没有办法将 IUPAC 或常见的分子名称转换为 SMILES?我想这样做,而不必使用在线系统手动转换每一个。任何输入将不胜感激!

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

谢谢!

4

5 回答 5

15

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

from urllib.request import urlopen
from urllib.parse import quote

def CIRconvert(ids):
    try:
        url = 'http://cactus.nci.nih.gov/chemical/structure/' + quote(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', 'Adamant']

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 CCO[S](=O)(=O)OCC
50-78-2 CC(=O)Oc1ccccc1C(O)=O
Adamant Did not work
于 2019-02-28T18:29:51.880 回答
2

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

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

(RDKit KNIME 节点也使用 OPSIN)

于 2019-03-16T11:07:46.783 回答
0

您可以使用pubchem的批量查询:

于 2022-01-18T04:58:10.390 回答
0

接受的答案使用化学标识符解析器,但由于某种原因,该网站对我来说似乎有问题,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)
于 2021-02-04T23:27:06.583 回答
-1

如果将第一行更改为:

从 urllib2 导入 url 打开

它应该适用于 python 2.7

于 2019-09-14T05:51:37.403 回答