RDKit|突出分子差异

目录

1. 导入相关包

2.  两种高亮方式

方法一:通过子结构匹配进行高亮

方法二:直接高亮指定的原子编号

3.  高亮分子的不同子结构



1. 导入相关包

from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import rdFMCS
from rdkit.Chem.Draw import rdDepictor
rdDepictor.SetPreferCoordGen(True)
IPythonConsole.drawOptions.minFontSize=20

如果出现导入失败,请先安装RDKit,'pip install RdKit’即可。


2.  两种高亮方式

方法一:通过子结构匹配进行高亮

m = Chem.MolFromSmiles('[H][C@]1(CO)O[C@@]([H])(N2C=NC3=C(N)N=C(F)N=C23)[C@]([H])(O)[C@]1([H])O')
substructure = Chem.MolFromSmarts('CO')
print(m.GetSubstructMatches(substructure))
m

输出:

((0, 3), (1, 2), (4, 3), (16, 17), (18, 19))

图1 高亮分子子结构图

方法二:直接高亮指定的原子编号

根据方法一打印出来的原子编号,在方法二中使用该原子编号。​​​​​​​

m.__sssAtoms = [0,1,2,3,4,16,17,18,19]
m

图2 方法二高亮分子子结构图

图1和图2,标记出的分子子结构是一样的,可想而知,两种方法都能够达到同样的效果。但是方法一更简单直观。


3.  高亮分子的不同子结构

定义两种分子并可视化:​​​​​​​

mol1 = Chem.MolFromSmiles('FC1=CC=C2C(=C1)C=NN2')
mol2 = Chem.MolFromSmiles('CCC1=C2NN=CC2=CC(Cl)=C1')
Draw.MolsToGridImage([mol1, mol2])

图3 分子可视化

定义比较分子不同的方法:​​​​​​​

def view_difference(mol1, mol2):
    mcs = rdFMCS.FindMCS([mol1,mol2])
    mcs_mol = Chem.MolFromSmarts(mcs.smartsString)
    match1 = mol1.GetSubstructMatch(mcs_mol)
    target_atm1 = []
    for atom in mol1.GetAtoms():
        if atom.GetIdx() not in match1:
            target_atm1.append(atom.GetIdx())
    match2 = mol2.GetSubstructMatch(mcs_mol)
    target_atm2 = []
    for atom in mol2.GetAtoms():
        if atom.GetIdx() not in match2:
            target_atm2.append(atom.GetIdx())
    return Draw.MolsToGridImage([mol1, mol2],highlightAtomLists=[target
    _atm1, target_atm2])

调用view_difference 方法:

view_difference(mol1,mol2)

图4 分子不同子结构高亮图

这种方法你可以随时可视化并高亮两个分子间的不同子结构,喜欢本文的欢迎点赞、转发和评论哦!

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIDD Learning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值