分子指纹常用于识别结构和性质之间的关系
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、
免责声明:部分文章整合自网络,因内容庞杂无法联系到全部作者,如有侵权,请联系删除,我们会在第一时间予以答复,万分感谢。
最后,祝大家科研顺利!