总是忘记,直接记录下来,以后直接复制粘贴
得到canonical的分子:
mol = Chem.MolFromSmiles(smiles) # 使用RDKit MolFromSmiles函数标准化SMILES
canonical_smiles = Chem.MolToSmiles(mol, isomericSmiles=True) # 获取标准化后的SMILES
得到scaffold:
# 创建自定义函数,用于将SMILES标准化并生成scaffold结构
def generate_scaffold(smiles):
mol = Chem.MolFromSmiles(smiles)
scaffold = MurckoScaffold.MurckoScaffoldSmiles(mol=mol)
return scaffold
scaffold_smiles = generate_scaffold(canonical_smiles) # 调用自定义函数生成scaffold结构
某个分子是否包含某个母核:
from rdkit import Chem
# 母核 SMILES 字符串
core_smiles = 'O=C(NCc1ccccc1)c1c(Cc2ccccc2)sc2c1CCOC2'
# 分子 SMILES 或 Mol 文件路径
mol_smiles = 'C#CC(C)CNC(=O)c1c(CC(c2ccc(C(F)(F)F)cc2)N(F)F)sc2c1CCOC2'
# 读取分子结构
mol = Chem.MolFromSmiles(mol_smiles)
# 读取母核结构
core = Chem.MolFromSmiles(core_smiles)
# 查找分子中匹配母核的子结构
matches = mol.HasSubstructMatch(core)
print(matches)