分子描述符的可视化表达

分子指纹常用于识别结构和性质之间的关系

1、代码实现

from rdkit.Chem import Draw
import numpy as np
import matplotlib.pyplot as plt

from rdkit import Chem
from rdkit.Chem import AllChem
GetMorganFingerprintAsBitVect, MolFromSmiles = AllChem.GetMorganFingerprintAsBitVect, AllChem.MolFromSmiles

# 图片格式
plt.rc('font',family='Times New Roman')
plt.rcParams['savefig.dpi'] = 150 #图片像素
plt.rcParams['figure.dpi'] = 150 #分辨率

# smile结构表达
smis=[
    'CCO',
    'CC#N',
    'C1=CC=C(C=C1)O',
    'C1CC1N2C=C(C(=O)C3=CC(=C(C=C32)N4CCNCC4)F)C(=O)O',
    'O=[Zn]'
]

# 转化
mols=[]
for smi in smis:
    mol = Chem.MolFromSmiles(smi)
    mols.append(mol)
img=Draw.MolsToGridImage(mols,molsPerRow=4,subImgSize=(300,300),legends=['' for x in mols])
img

# 乙醇为例
mol_ethanol = Chem.MolFromSmiles('O=[Zn]')
mf_ethanol = GetMorganFingerprintAsBitVect(mol_ethanol,nBits=256, radius=2)
mf_ethanol = list(mf_ethanol)
ethanol_sum = np.sum(mf_ethanol)
print(mf_ethanol)
print(ethanol_sum)

# 活性位点
bi_ethanol = {}
fp_ethanol = GetMorganFingerprintAsBitVect(mol_ethanol,nBits=256, radius=2, bitInfo=bi_ethanol)
print(bi_ethanol)

# 活性位点可视化 --> {138: ((0, 0),), 141: ((1, 0),), 210: ((1, 1),)}
bits =[138,141,210]
imgs=[]
for bit in bits:
    mfp2_svg = Draw.DrawMorganBit(mol_ethanol, bit, bi_ethanol)
    imgs.append(mfp2_svg)
def displayimgsinrow(imgs,col=4):
#     plt.figure(figsize=(300,300))
    columns = col
    for i, image in enumerate(imgs):
        ax=plt.subplot(len(imgs), columns, i + 1)
        ax.set_axis_off()
        plt.imshow(image)
displayimgsinrow(imgs)

2、

免责声明:部分文章整合自网络,因内容庞杂无法联系到全部作者,如有侵权,请联系删除,我们会在第一时间予以答复,万分感谢。

最后,祝大家科研顺利!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值