从微笑文件中检索所有分子

时间:2013-02-12 05:59:19

标签: python bioinformatics biopython cheminformatics

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

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

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

如何使用python找到所有原子,包括连接的'H'原子 smiles文件的示例,需要转换为包含连接的'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]

提前谢谢。

5 个答案:

答案 0 :(得分:6)

请参阅Open Babel

Open Babel网站上的有用链接

另见,
This blog(由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()

答案 1 :(得分:3)

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

尝试使用openbabel,CDK或类似的cheminformatics库。

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

答案 2 :(得分:3)

对于化合物的分子量,以SMILES给出,Openbabel的Python绑定应该有效:

import pybel
mol = pybel.readfile("smi", "stuff.smi").next()
print mol.molwt

答案 3 :(得分:2)

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

答案 4 :(得分:0)

RDKIT是python中定义明确的化学信息库。

从微笑中读取分子,

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]')

在您将微笑读入RDKIT分子后,您几乎可以做任何事情。查看文档以获取更多信息。