Bla*_*ade 7 python cheminformatics rdkit
我有一个用 SMILES 字符串表示的分子数据集。我试图将其表示为图表。有没有办法这样做?例如,假设我有 string CC(C)(C)c1ccc2occ(CC(=O)Nc3ccccc3F)c2c1,是否有将其转换为图形表示的通用方法,即邻接矩阵和原子向量?我从图表中看到解决SMILES 的问题,我知道rdkit有MolFromSmiles,但我找不到可以从 SMILES 字符串中获取图表的内容。
你可以试试pysmiles。从 SMILES 描述开始,您应该能够创建一个 NetworkX 图并使用代码生成所需的对象
from pysmiles import read_smiles
import networkx as nx
smiles = 'C12=C3C4=C5C6=C1C7=C8C9=C1C%10=C%11C(=C29)C3=C2C3=C4C4=C5C5=C9C6=C7C6=C7C8=C1C1=C8C%10=C%10C%11=C2C2=C3C3=C4C4=C5C5=C%11C%12=C(C6=C95)C7=C1C1=C%12C5=C%11C4=C3C3=C5C(=C81)C%10=C23'
mol = read_smiles(smiles)
# atom vector (C only)
print(mol.nodes(data='element'))
# adjacency matrix
print(nx.to_numpy_matrix(mol))
Run Code Online (Sandbox Code Playgroud)
如果你能接受一个马马虎虎的可视化,你也可以用
import matplotlib.pyplot as plt
elements = nx.get_node_attributes(mol, name = "element")
nx.draw(mol, with_labels=True, labels = elements, pos=nx.spring_layout(mol))
plt.gca().set_aspect('equal')
Run Code Online (Sandbox Code Playgroud)
富勒烯很有趣:)
要完成 Davide 的回答/sf/answers/3994479191/,您可以使用以下方法将键顺序包含到邻接矩阵中:
nx.to_numpy_matrix(mol, weight='order')
Run Code Online (Sandbox Code Playgroud)
或根据networkx文档使用
nx.adjacency_matrix(mol, weight='order').todense()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4695 次 |
| 最近记录: |