化合物分子可合成性打分 SA_Score;rdkit QED定量评估类药性
1、化合物分子可合成性打分 SA_Score
参考:
https://github.com/rdkit/rdkit/tree/master/Contrib/SA_Score
https://cloud.tencent.com/developer/article/1817199
这SA_Score计算基本算rdkit的一个插件功能,需要单独下载,特别fpscores.pkl.gz压缩包下载下来
化合物分子可合成性打分 SA_Score
SAscore 简单介绍(文章地址:https://jcheminf.biomedcentral.com/articles/10.1186/1758-2946-1-8):
2009年诺华公司的研究员Ertl和Schuffenhauer在化学信息学杂志上发表了名为SAscore的Rdkit插件用于快速评估药物分子的合成难易程度,其将小分子合成难易程度用1到10区间数值进行评价,越靠近1表明越容易合成,越靠近10表明合成越困难。其计算权重为化合物的片段贡献减去复杂程度(SAscore =fragmentScore − complexityPenalty),其中片段贡献值根据PubChem数据库中上百万分子计算共性进行计算,复杂度则考虑分子中非标准结构特征的占比,例如大环、非标准环的合并、立体异构和分子量大小等方面。研究员将40个化合物给化学家进行经验性评估其合成难易程度,并与SAscore得分进行比较发现与化学家给出的合成难易程度评分的相关性R2高达0.89
import math
import picklefrom rdkit import Chem
from rdkit.Chem import rdMolDescriptorsimport os
import os.path as op_fscores = Nonedef readFragmentScores(name='fpscores'):import gzipglobal _fscores# generate the full path filename:if name == "fpscores":name = op.join(os.getcwd(), name)# name = op.join(op.dirname(__file__), name)data = pickle.load(gzip.open('%s.pkl.gz' % name))outDict = {}for i in data:for j in range(1, len(i)):outDict[i[j]] = float(i[0])_fscores = outDictdef numBridgeheadsAndSpiro(mol, ri=None):nSpiro = rdMolDescriptors.CalcNumSpiroAtoms(mol)nBridgehead = rdMolDescriptors.CalcNumBridgeheadAtoms(mol)return nBridgehead, nSpirodef calculateScore(m):if _fscores is None:readFragmentScores()# fragment scorefp = rdMolDescriptors.GetMorganFingerprint(m,2) # <- 2 is the *radius* of the circular fingerprintfps = fp.GetNonzeroElements()score1 = 0.nf = 0for bitId, v in fps.items():nf += vsfp = bitIdscore1 += _fscores.get(sfp, -4) * vscore1 /= nf# features scorenAtoms = m.GetNumAtoms()nChiralCenters = len(Chem.FindMolChiralCenters(m, includeUnassigned=True))ri = m.GetRingInfo()nBridgeheads, nSpiro = numBridgeheadsAndSpiro(m, ri)nMacrocycles = 0for x in ri.AtomRings():if len(x) > 8:nMacrocycles += 1sizePenalty = nAtoms**1.005 - nAtomsstereoPenalty = math.log10(nChiralCenters + 1)spiroPenalty = math.log10(nSpiro + 1)bridgePenalty = math.log10(nBridgeheads + 1)macrocyclePenalty = 0.# ---------------------------------------# This differs from the paper, which defines:# macrocyclePenalty = math.log10(nMacrocycles+1)# This form generates better results when 2 or more macrocycles are presentif nMacrocycles > 0:macrocyclePenalty = math.log10(2)score2 = 0. - sizePenalty - stereoPenalty - spiroPenalty - bridgePenalty - macrocyclePenalty# correction for the fingerprint density# not in the original publication, added in version 1.1# to make highly symmetrical molecules easier to synthetisescore3 = 0.if nAtoms > len(fps):score3 = math.log(float(nAtoms) / len(fps)) * .5sascore = score1 + score2 + score3# need to transform "raw" value into scale between 1 and 10min = -4.0max = 2.5sascore = 11. - (sascore - min + 1) / (max - min) * 9.# smooth the 10-endif sascore > 8.:sascore = 8. + math.log(sascore + 1. - 9.)if sascore > 10.:sascore = 10.0elif sascore < 1.:sascore = 1.0return sascoredef my_score(mols:list):readFragmentScores("fpscores")print('smiles\tsa_score')for m in mols:s = calculateScore(m)smiles = Chem.MolToSmiles(m)print(smiles + "\t" + "\t%3f" % s)##测试m = Chem.MolFromSmiles('*c1nc(=O)c2cc(C(F)(F)F)cc([N+](=O)[O-])c2s1')
x = [m,m]
my_score(x)
2、rdkit QED定量评估类药性
QED代表类药分子的定量估计,这一概念由Richard Bickerton及其同事首次提出的。QED测量的经验基本原理反映了分子性质的基本分布,包括分子量,logP,拓扑极性表面积,氢键供体和受体的数量,芳环和可旋转键的数量,以及有害化学官能团分布。
from rdkit.Chem import QEDkkkk = Chem.MolFromSmiles("O=C1[C@@H](CC)N(CC2=CC(C)=CS2)C3=C(N1C)C=NC(NC4=C(OCC)C=C(C5CCN(C)CC5)C=C4)=N3")QED.properties(kkkk)QED.qed(kkkk)
化合物分子可合成性打分 SA_Score;rdkit QED定量评估类药性相关推荐
- RDKit | 定量评估类药性(QED)
QED(quantitative estimate of drug-likeness)是一种将药物相似性量化为介于0和1之间的数值的方法. 药物相似性 如Lippinsky规则所示,获批药物的理化参数 ...
- 寻找新冠“解药”:在 10^60 化合物分子空间,他们用 AI 挖掘潜在药物
作者 | Just 出品 | CSDN(ID:CSDNnews) 医药研发行业有一个"三个十"的说法,即一种药物的发现需要投入十年以上的时间,花费十多亿美元,最后获得10%的成功率 ...
- 化合物分子 ogb、dgl生成图网络及GNN模型训练;pgl图框架
参考:https://towardsdatascience.com/learn-to-smell-molecules-with-graph-convolutional-neural-networks- ...
- 2022-2028年中国塑料合成革的制造行业市场全景评估及发展趋势研究报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了塑料合成革的制造行业相关概述.中国塑料合成革的制造行业运行环境.分析 ...
- DrugAI资料汇总
DrugAI资料汇总 CADD学习汇总 CADD课程学习(1)-- 药物设计基础知识(不对外开放) 分子式基础 SMILIES基础 CADD课程学习(2)-- 靶点晶体结构信息(不对外开放) 数据集 ...
- AI用于COVID-19的药物发现和疫苗开发
SARS-COV-2号召科学界采取行动,以对抗日益增长的大流行病.撰写本文时,还没有新型抗病毒药或批准的疫苗可用于部署作为一线防御.了解COVID-19的病理生物学特性可通过阐明未探索的病毒途径来帮助 ...
- JCIM | 一种考虑受体结构的从头药物生成方法-SBMolGen
2021年,Biao Ma等人在JCIM期刊上发表了一篇名为**"Structure-Based de Novo Molecular Generator Combined with Arti ...
- RDKit | 通过评估合成难度(SA Score)筛选化合物
无论如何获得先导化合物,评估候选先导化合物的合成难度都很重要.无论该化合物在计算机上的应用前景如何,实际上并未对其进行合成和评估. 介绍SA score(Synthetic Accessibility ...
- 用于分子生成的数据高效性图语法学习
近年来分子生成问题收到了很多关注.但是现有的方法都是基于深度神经网络,需要在很大的数据集上训练.在实践中,由于劳动密集型实验和数据收集,特定类别化学数据集的规模通常是有限的(例如,几十个样本).这对深 ...
最新文章
- 服务化的未来--ServiceMesh?
- bzoj1597[Usaco2008 Mar]土地购买
- cogs2109 [NOIP2015] 运输计划
- LeetCode 314. 二叉树的垂直遍历(BFS/DFS)
- 电脑计算机d盘有用吗,d盘不见了,教您电脑d盘不见了怎么解决
- 父亲节,来认识一下这几位“爸爸”
- 【Webpack】TypeError: Cannot read property ‘tap‘ of undefined at HtmlWebpackPlugin.
- 和发光的人在一起,慢慢地你也会发光
- 基于Java swing实现的学生选课管理系统
- 海康摄像头如何查看IP,重置密码
- Win10系统自带的备份,恢复功能
- Photoshop调色教程
- 改变世界的五位程序员
- 回溯法 n皇后 python 解法一
- php生成个性签名,怎么巧妙添加个性签名
- 常用英语翻译与技巧总结
- autojs编写的网易云音乐和视频搜索脚本源代码免费分享开源
- 手柄映射软件_生化危机3该用哪款游戏手柄?北通宙斯给你四维游戏体验
- python简单体育竞技模拟_【python】羽毛球竞技模拟
- 解决4G路由器内网无法ping通外网问题总结