从PubChem FTP数据生成分子的2D图像

zac*_*san 6 python scientific-computing scipy pubchem cheminformatics

而不是抓住PubChem的网站,我宁愿做得好,并从PubChem ftp网站本地生成图像:

ftp://ftp.ncbi.nih.gov/pubchem/specifications/

唯一的问题是我仅限于OSX和Linux,我似乎无法找到一种以编程方式生成他们在网站上拥有的2D图像的方法.看这个例子:

https://pubchem.ncbi.nlm.nih.gov/compound/6#section=Top

在"2D结构"标题下,我们在这里有这样的图像:

https://pubchem.ncbi.nlm.nih.gov/image/imgsrv.fcgi?cid=6&t=l

这就是我想要产生的东西.

Dav*_*sza 5

如果你想要一些开箱即用的东西,我建议使用来自 ChemAxon 的 Marvin ( https://www.chemaxon.com/products/marvin/ ) 的molconvert,它对学者免费。它可以从命令行轻松使用,并且支持大量输入和输出格式。因此,对于您的示例,它将是:

molconvert "png" -s "C1=CC(=C(C=C1[N+](=O)[O-])[N+](=O)[O-])Cl" -o cdnb.png
Run Code Online (Sandbox Code Playgroud)

结果如下图:

1-氯-2,4-二硝基苯

它还允许您设置宽度、高度、质量、背景颜色等参数。


但是,如果您是程序员,我肯定会推荐RDKit。遵循为以微笑形式给出的一对化合物生成图像的代码。

from rdkit import Chem
from rdkit.Chem import Draw

ms_smis = [["C1=CC(=C(C=C1[N+](=O)[O-])[N+](=O)[O-])Cl", "cdnb"],
           ["C1=CC(=CC(=C1)N)C(=O)N", "3aminobenzamide"]]
ms = [[Chem.MolFromSmiles(x[0]), x[1]] for x in ms_smis]

for m in ms: Draw.MolToFile(m[0], m[1] + ".svg", size=(800, 800))
Run Code Online (Sandbox Code Playgroud)

这为您提供以下图像:

中央银行在此处输入图片说明

  • Jchem 拥有学术许可证,可以访问其所有工具。我在答案中添加了此信息以及 RDKit 中的代码示例。 (2认同)

zac*_*san 2

因此,我还给 PubChem 人员发了电子邮件,他们很快就回复了我:

我们对图像的唯一批量访问是通过下载服务: https: //pubchem.ncbi.nlm.nih.gov/pc_fetch/pc_fetch.cgi
您一次最多可以请求 50,000 张图像。

这比我预期的要好,但仍然并不令人惊讶,因为它需要下载理论上我可以在本地生成的东西。因此,我将保留这个问题,直到某个人编写一个开源库来做同样的事情。

编辑:

我想,如果人们和我做同样的事情,我可能会节省一些时间。我创建了一个基于 Mechanize 的 Ruby Gem 来自动下载图像。请善待他们的服务器并只下载您需要的内容。

https://github.com/zachaysan/pubchem

gem install pubchem