前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RDKit | 通过评估合成难度筛选化合物

RDKit | 通过评估合成难度筛选化合物

作者头像
DrugAI
发布2021-02-01 09:54:32
1.2K0
发布2021-02-01 09:54:32
举报
文章被收录于专栏:DrugAI

简介

无论如何获得先导化合物,评估候选先导化合物的合成难度都很重要。无论该化合物在计算机上的应用前景如何,实际上并未对其进行合成和评估。

介绍SA score(Synthetic Accessibility score)作为评估化合物合成难易程度的一种方法。

药物研发中合成难度评估的重要性

药物发现研究中的主要候选化合物

  • 预期的活性值
  • 结构新颖,易于申请专利

如果化合物是从商业产品或内部数据库获得,则“合成潜力”得到保证。另一方面,尚不清楚是否可以实际合成复杂的天然化合物或从头设计的化合物。

无论如何,在研究的某个阶段都必须考虑化合物的“易于合成”。在这种情况下,如果优先考虑其他指标(例如活性)并在最后考虑“合成的难易程度”,则倾向于选择具有相似化学型和骨架的化合物。为了防止这种情况,期望从筛选的初期就通过均等地处理“合成可及性”来评价化合物。换句话说,用一种简单的方法来评估大量化合物的“合成容易性”很重要。

经验丰富的合成化学家可以通过查看化合物的结构来确定合成的难度,但是它不能解决数百万种化合物的筛选问题。因此,有必要使用计算机来评估“合成的容易性”。

计算机辅助合成难度评估方法

  • 基于分子结构复杂性的方法
  • 基于逆合成分析的方法

前者基于一种分子结构复杂性方法,其中当存在难以合成的部分结构(例如中环,螺骨架和许多不对称中心)时,判断难度级别较高。这是一种判断合成难度的技术。后者可以说是更可靠的指标,但是计算量很大,并且反应数据库的维护也很困难。

SA Score

SA Score是根据简洁的规则设计的,可以快速评估大量化合物。该方法基于分子的“复杂性”,但是为了结合试剂和反应的作用,可以立即构建复杂的结构,因此使用了“经常出现的子结构易于合成”的假设。

具体地,基于从PubChem获得的100万种化合物的ECFP4指纹的频率进行加权。由出现频率加权然后相加的子结构为下式中的“ fragmentScore”

“ ComplexityPenalty”仅考虑了诸如循大环和分子量之类的因素。将值标准化为1(简单)到10(困难)。


导入库

代码语言:javascript
复制
from rdkit import rdBase, Chem
from rdkit.Chem import AllChem, Draw, PandasTools
from rdkit.Chem.Draw import IPythonConsole
import sascorer

import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline

载入数据

代码语言:javascript
复制
df = pd.read_csv('zim.100.txt', sep='\t')
df.head()

将smiles转换为RDKit 的Mol对象

代码语言:javascript
复制
PandasTools.AddMoleculeColumnToFrame(frame=df, smilesCol='smiles')
df.head()
代码语言:javascript
复制
df['calc_SA_score'] = df.ROMol.map(sascorer.calculateScore)
x = df.sa_score
y = df.calc_SA_score
with mpl.style.context('seaborn'):
    plt.plot(x, y, 'o')
    plt.xlabel('given SA scores')
    plt.ylabel('calculated SA scores')
    plt.title('SA scores for model compounds')
代码语言:javascript
复制
(id_max, id_min) = (df.sa_score.idxmax(), df.sa_score.idxmin())
sa_mols = [df.ROMol[id_max], df.ROMol[id_min]]
Draw.MolsToGridImage(sa_mols, subImgSize=(340,200),
                     legends=['SA-score: {:.2f}'.format(df.sa_score[i]) for i in [id_max, id_min]])

作者丨王建民

单位丨湖南大学

研究方向丨药物设计、生物医药大数据

DrugAI

本文为DrugAI原创编译整理,如需转载,请在公众号后台留言。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DrugAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档