使用rdkit将SMILES转换成三维坐标数据并提取数据
从 rdkit 包中导入 Chem 和 AllChem,然后通过正则表达式,将SMILES字符串转换为三维坐标数据,同时提取其中的位置信息和元素符号。代码如下:
from rdkit import Chem
from rdkit.Chem import AllChem
import re
smiles = "CC(=O)OC1=CC=C1C(=O)O"
mol = Chem.MolFromSmiles(smiles)
mol3d = Chem.AddHs(mol)
statis = Chem.MolToMolBlock(mol3d)
coords = re.findall(r'(-?\d+.\d+)\s+(-?\d+.\d+)\s+(-?\d+.\d+)\s+(\w+)', statis)
new_coords = []
for coord in coords:
new_coords.append([coord[0], coord[1], coord[2]])
print(new_coords)
下载地址
用户评论