3

我正在处理 .smiles 文件。.smiles 文件的文件结构是:http ://en.wikipedia.org/wiki/Chemical_file_format#SMILES

我想从微笑文件中获取所有原子。这意味着如果有单个“C”原子,则意味着将有 4 个“H”原子连接到它们。

我在搜索时发现 python 中有一些模块可以解析微笑格式,但它们不提供支持的氢原子。(例如:他们只给出'C'而不是其他4个'H'原子连接到那个'C'原子)

如何使用 python 找到所有原子,包括连接的“H”原子。
需要转换为所有原子的微笑文件示例,包括连接的“H”原子:

[H]OC([H])([H])[C@@]1([H])C([H])=C([H])[C@@]([H])(n2c([H])nc3c(nc(nc23)N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H]

先感谢您。

4

5 回答 5

6

请参阅打开通天塔

Open Babel 网站上的有用链接

另请参阅
此博客(由 Casper Steinmann 撰写)关于 Python 化学(使用 Open Babel,但并非全部)

更新 请参阅此代码(未经测试):

mymol = pybel.readstring("smi",  
"[H]OC([H])([H])[C@@]1([H])C([H])=C([H])[C@@]([H])(n2c([H])nc3c(nc(nc23)" + \
"N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H")
print mymol.addh()
于 2013-02-12T09:38:42.803 回答
3

我想从微笑文件中获取所有原子。这意味着如果有单个“C”原子,则意味着将有 4 个“H”原子连接到它们。 这个假设是不正确的,它可以是1,2,3个氢。

尝试使用 openbabel、CDK 或类似的化学信息学库。

但是,为什么你需要文件中的所有原子?

于 2013-02-12T07:07:14.600 回答
3

对于以 SMILES 形式给出的化合物的分子量,Openbabel 的 Python 绑定应该可以工作:

import pybel
mol = pybel.readfile("smi", "stuff.smi").next()
print mol.molwt
于 2013-06-12T07:24:01.657 回答
2

试试frowns,这是一个化学信息学工具包,旨在快速开发化学相关算法。它几乎 100% 用 Python 编写,一小部分用 C++ 编写。

于 2013-02-12T09:05:39.280 回答
0

RDKIT is a well defined cheminformatics library in python.

To read a molecule from smiles,

from rdkit import Chem

m = Chem.MolFromSmiles('[H]OC([H])([H])[C@@]1([H])C([H])=C([H])[C@@]([H])(n2c([H])nc3c(nc(nc23)N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H]')

After you read in the smiles into an RDKIT molecule you can pretty much do everything. documentation - http://www.rdkit.org

于 2014-02-11T15:19:31.050 回答