首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RDKit:化合物骨架分析

新药研发是一项耗时长且耗资巨大的工程,据资料显示由安全性问题与药物代谢动力学性质不良引起新化学实体成药失败的比例高达60%,且这一比例还在逐年升高。代谢稳定性是影响药代动力学性质的主要因素之一,它一般用来描述化合物代谢的速度和程度,也是决定药物小分子生物利用度的一个重要因素。骨架修饰是改变代谢途径、提高代谢稳定性的重要化学结构改造策略之一,通过骨架修饰进行先导化合物优化,能够显著提高先导化合物的代谢稳定性。

药物分子由药效团和结构骨架构成的,由苗头化合物演化为先导化合物,继而通过先导化合物优化成为候选化合物的过程,也是保持药效团、变换分子结构、修饰基因和边链的过程。骨架修饰包括骨架迁越、成环修饰以及改变环的大小,通过骨架修饰可以改变化合物的母核,调节化合物的理化性质,进而提高代谢稳定性。采用代谢稳定的环系结构替代不稳定的结构片段,进而改变整个化合物的代谢途径,提高代谢稳定性。美迪西可以为客户提供涵盖各种靶标和疾病领域的药物研发服务,包括从活性化合物发现、 靶标验证、先导化合物优化到临床前候选药物的选择。

骨架迁越

骨架迁越最早是以计算技术引入到新药研发的,其目的是在已知的数据库中,寻找与苗头化合物完全不同的拓扑骨架,但仍保持原有的生物活性。也就是从已知的活性分子结构出发,通过计算化学方法发现新的拓扑结构和活性分子。由苗头化合物到先导化合物的演化过程,以及先导化合物优化到候选药物,大都涉及了骨架的变换,骨架迁越改变已有活性分子的母体结构,目的有以下几种:

(1)将亲脂性的骨架用极性骨架替换,可增加药物的溶解度;

(2)调整骨架亲水-亲脂的相对程度,可改变药物的分配性;

(3)将容易发生代谢作用的骨架用代谢稳定性的毒性低的骨架替换,可以提高药物的稳定性;

(4)改善药代动力学性质,药物的毒性或不良反应主要是由于骨架结构所致;

(5)降低分子的柔性,一些活性分子的柔性键过多,如肽类药物,构象的多样性导致与受体的亲和力降低,用刚性骨架替换,可改善结合力,并且也改善药代动力学行为;

(6)提高对受体的亲和力:有的骨架不只是对药效团起支撑作用,而且也参与同受体的结合,改变骨架可以提高对受体的亲和力;

(7)中心骨架的改变,产生了新的结构,能够获得专利保护。


基于RDKit的骨架分析

导入库

代码语言:javascript
复制
from rdkit importChem
from rdkit.ChemimportDraw
from rdkit.Chem.ScaffoldsimportMurckoScaffold

载入数据

代码语言:javascript
复制
drugbank_input = Chem.SDMolSupplier('drugbank.sdf')
drugbank = [m for m in drugbank_input if m]

骨架提取示例

代码语言:javascript
复制
basic_structure = drugbank[222]
atomic_scaffold = MurckoScaffold.GetScaffoldForMol(basic_structure)
atomic_scaffold.Compute2DCoords()
graph_scaffold = MurckoScaffold.MakeScaffoldGeneric(atomic_scaffold)
Draw.MolsToGridImage([basic_structure, atomic_scaffold, graph_scaffold])

骨架提取

代码语言:javascript
复制
drugbank_atomic_scaffolds = [MurckoScaffold.GetScaffoldForMol(mol) for mol in drugbank]
for i in drugbank_atomic_scaffolds:
    i.Compute2DCoords()

def genericize_scaffold(s):
try:
returnMurckoScaffold.MakeScaffoldGeneric(s)
    except ValueError:
returnNone
drugbank_grafh_scaffolds = [genericize_scaffold(s) for s in drugbank_atomic_scaffolds]
len(drugbank), len(drugbank_atomic_scaffolds), len(drugbank_grafh_scaffolds), len([x for x in drugbank_grafh_scaffolds if x == None])
Draw.MolsToGridImage([drugbank[111], drugbank_atomic_scaffolds[111], drugbank_grafh_scaffolds[111]])

骨架出现频率统计

代码语言:javascript
复制
scaffold_smiles = [Chem.MolToSmiles(scaffold) for scaffold in drugbank_grafh_scaffolds if scaffold != None]
len(scaffold_smiles), scaffold_smiles[111]

import collections
counter=collections.Counter(scaffold_smiles)

print(counter)

绘制频繁出现骨架

代码语言:javascript
复制
most_freq = Chem.MolFromSmiles('C1CCCCC1')
second_freq = Chem.MolFromSmiles('C1CCC(CC2CCCCC2)CC1')
Draw.MolsToGridImage([most_freq, second_freq])

DrugAI

下一篇
举报
领券