我有一个以SMILES字符串表示的分子数据集。我试图将其表示为图形。有办法吗?例如,假设我有字符串CC(C)(C)c1ccc2occ(CC(=O)Nc3ccccc3F)c2c1
,是否存在将其转换为图形表示(即邻接矩阵和原子向量)的一般方法?我看到了一些针对SMILES from graphs的问题,并且我知道rdkit
有MolFromSmiles
,但是我找不到从SMILES字符串中获取图形的内容。
答案 0 :(得分:1)
您可以尝试pysmiles。 从SMILES描述开始,您应该能够创建NetworkX图并使用代码沿着
行生成所需的对象。from pysmiles import read_smiles
import networkx as nx
smiles = 'C1CC[13CH2]CC1C1CCCCC1'
mol = read_smiles(smiles)
# atom vector (C only)
print(mol.nodes(data='element'))
# adjacency matrix
print(nx.to_numpy_matrix(mol))
答案 1 :(得分:0)
要完成Davide的答案,可以使用以下命令将债券订单包括在邻接矩阵中:
nx.to_numpy_matrix(mol, weight='order')
nx.adjacency_matrix(mol, weight='order').todense()
答案 2 :(得分:0)
networkx
是一个很好的解决方案。如果您正在寻找更自定义的内容,则可以自己创建图形。请参阅此示例:SMILES from graph