/img/logo.png

【讲座笔记】阿斯利康计算机辅助药物设计讲座

利用人工智能加速药物研发——小分子及其他领域 - 总结提纲

前言: 本次在线讲座由BioSolveIT公司主办,邀请了瑞典阿斯利康的Eva Nittinger博士主讲。讲座主题为"利用人工智能加速药物研发——小分子及其他领域"。本文是笔者整理的讲座笔记,供中文研究者参考。

1. 药物发现过程概述

1.1 DMTA循环的核心地位

  • DMTA循环:设计(Design) → 制备(Make) → 测试(Test) → 分析(Analyze)
  • 时间挑战:从化学起始点(hit)到候选药物(CD)需要3年以上
  • 加速目标:如何通过计算方法加速这一过程

/img/AZ/1.png

1.2 计算机辅助药物设计的复杂性

  • 硅内靶点评估:3D结构预测、结合模式、模式选择
  • 化学空间探索:命中识别、化学系列选择、知识产权分析
  • 化合物谱优化:多参数(>100)优化、平衡相互关联和对立因素

2. 蛋白质折叠与结构预测

2.1 AlphaFold的成功应用案例

  • 分子替换模板:X射线晶体学中的应用
  • 功能预测:通过预测数据补充实验数据
  • 结构动力学:探索AlphaFold是否能预测蛋白质动态变化

2.2 结构预测方法的局限性

优势领域:

  • 单一结构解析
  • 强蛋白质-蛋白质相互作用

不适用领域:

  • 动态和结构运动
  • 新型模式(如PROTACs)

2.3 深度学习方法比较

  • 多种方法评估:AlphaFold2、RoseTTAFold、NeuralPlexer等
  • 结合状态预测:开放态(apo)vs闭合态(holo)结构预测
  • 偏差分析:NeuralPlexer和RoseTTAFold在配体信息获取方面的优势

/img/AZ/2.png

3. 化学空间探索与利用

3.1 生成式建模 vs 虚拟筛选

传统虚拟筛选:

  • 在大型数据库中搜索,寻找少量合适的命中化合物
  • 类似"大海捞针"的过程

生成式模型:

  • 以概率方式编码几乎无限的化学空间
  • 更高效的化学空间探索

/img/AZ/3.png

乌普萨拉大学 Advanced Molecular Modelling Applied to Drug Discovery(3FK181) 课程复习笔记

Advanced Molecular Modelling Applied to Drug Discovery(3FK181),Uppsala University Exam Preparation Notes- 2023


Note

这是一个个人的备考复习笔记,适用于瑞典🇸🇪乌普萨拉大学的课程 Advanced Molecular Modelling Applied to Drug Discovery(3FK181),Uppsala University.手写笔记由 Claude AI转换为Markdown格式, 仅供参考。

原始文档可点击这里下载

Chapter 1: Ligand-Protein Interaction

Key Points:

  1. Describing the interaction of molecules

    • Determining if a molecule is a good target or not
  2. Types of Interactions:

    • Electrostatics: Follow Coulomb’s Law

      • F = -q₁q₂/4πε₀r² (ε₀: electric constant, q₁, q₂: charges)
      • π-π stacking: interactions between benzene rings
      • π-cation interactions: e.g., AchE with -NH₃⁺ and -Ph groups
    • H-bond: Consider O, N atoms

Sci Data | 非肽类大环化合物渗透性数据库

Sci Data | 非肽类大环化合物渗透性数据库

导读

近日,瑞典乌普萨拉大学Jan Kihlberg 课题组在 Scientific Data 发表了题为A membrane permeability database for nonpeptidic macrocycles的论文。乌普萨拉大学化学系Vasanthanathan Poongavanam 副教授 (Docent) 和 Jan Kihlberg 教授为论文共同通讯作者,硕士研究生冯秋实为论文第一作者,Danjo De Chavez博士为参与作者。

Lipinski类药五规则作为一种高效筛选类药分子的定量准则,规定了类药分子应具备的特征:分子量小于500、氢键给体不超过5个、氢键受体不超过10个、油水分配系数对数值不超过5。然而,近期研究表明,约半数与人类疾病相关的靶点难以被传统的、符合五规则的小分子药物所干预。虽然大分子生物制剂为此提供了替代方案,但生物制剂无法穿透细胞且不适合口服给药,这限制了其对许多细胞内靶点的应用价值。

在Lipinski化学空间之外的"超越五规则"(beyond Ro5,bRo5)化学空间中,大环化合物因其独特优势而备受关注。这类由12个及以上原子构成的大环结构化合物能够与传统难治靶点产生有效相互作用。然而,大环化合物在溶解度、细胞渗透性和代谢稳定性等关键口服生物利用度指标方面仍面临挑战。

鉴于细胞渗透性的实验测定往往耗时且成本高昂,计算机模拟方法提供了更具成本效益的预测途径。在此研究中,该课题组通过收集科学文献、专利和生物活性数据库的数据,建立了一个符合FAIR原则(Findable, Accessible, Interoperable, and Reusable,即可查找、可访问、可互操作、可重用)的全面数据库,包含4216个大环化合物的5638条细胞渗透性实验数据。该数据库可作为机器学习和深度学习预测模型的训练数据集。此外,该研究团队还引入了"酰胺比率"(Amide Ratio, AR)这一创新性分子描述符,首次实现了大环化合物的定量分类。这一免费在线资源将显著促进新型大环药物的开发设计。

/img/db/1.png

数据收集

研究团队从三个主要来源收集数据:科学文献、专利文献和综合性化学数据库。首先研究团队利用PubMed和Google Scholar,结合"macrocycle"和 “permeability"或者特定的渗透性测量模型(PAMPA,Caco-2, MDCK 和 RRCK)为关键词进行文献检索,并利用同样的检索方式在Google Patents搜索引擎收集来自发明专利的非肽类大环化合物的渗透性数据。除此之外,该团队还使用了ChEMBL数据库的官方Python接口(ChEMBL API Python client)进行自动化批量数据收集。为确保数据质量,研究人员对所有收集的数据进行了严格的人工审查和标准化处理,包括删除混合物和无机物、结构标准化以及数据单位统一等步骤。

/img/db/2.png

数据分析

数据库各子项分析

最终建立的数据库包含5638条来自不同实验方法的膜渗透性数据,其中84%来自科学文献、4%来自专利文献、11%来自ChEMBL数据库。数据库中的渗透性数据主要来自五类实验方法。其中PAMPA占比最高,达67%(3767条),值得注意的是91%的PAMPA渗透性数据来自同一篇文献。Caco-2细胞实验数据占26%(1502条),包含顶端到基底(PappAB)和基底到顶端(PappBA)两个方向的表观渗透系数(Papp),以及加入转运体抑制剂后的相应值(PappAB+Inh. 和PappBA+Inh.)。通过计算外排比(ER = Papp BA/Papp AB),可评估化合物是否存在主动外排以及外排的程度。MDCK细胞实验贡献了264条数据,主要用于评估被动和主动跨膜转运特性。

InDraw: 用AI把化学结构图片转换成SMILES

前言

鲁迅先生曾经说过:发化学文章不给SMILES等于没有发过。鲁迅:我没说过 但是很多文章里面的化学结构的Supporting Information 里面确实不给SMILES。涉及到全合成或者一大堆手性的化合物如果我们想要自己在ChemDraw里面画出来就极度痛苦。

InDraw for web 是一个在线化学结构式绘制软件,最牛X的是他可以把化学图片结构式识别成SMILES(或者其他软件可读)的格式。

实例

复制一张看起来就很劝退的结构式图片,黏贴在画板里面。选择 AI 图像识别 /img/OCR/4.png

识别完成后,右键,选择想要的格式,搞定! /img/OCR/5.png

注意 ⚠️

  • 在使用之前务必人工校对!
  • 用于识别的图片并非尺寸越大越好,保证背景干净就行。

使用ChEMBL Python API 搜索化合物信息

前言

ChEMBL 算是各位化学从业者喜闻乐见的数据库。(因为他不要钱) 但是如果我们想要批量收集我们想要的内容,用网页版挨个寻找属实有点麻烦了。那么,有没有什么方法能够批量自动获取我们想要的分子信息呢?

其实除了我们熟知的ChEMBL网页 , ChEMBL 还贴心的提供了可以用Python 搜索的 ChEMBL web service client 服务。只要我们在Python代码中输入想要的关键词,就可以批量搜索到我们想要的内容然后保存为CSV 文件用于后续处理。(比如赛博炼丹)

应用实例

一位励志发JACS的同学希望收集ChEMBL上杂环化合物Heterocyclic compound溶解度Solubility数据,我们应该怎么找呢?

示例代码

首先 安装chembl_webresource_client 包

1
! pip install chembl_webresource_client

然后运行这一段代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import csv
from chembl_webresource_client.new_client import new_client

# 新建一个Client
client = new_client

# 录入关键词 solubility
assays = client.assay.filter(
    description__icontains='solubility'
)

# 新建一个CSV文件存储结果
with open('heterocyclic_solubility_data.csv', 'w', newline='', encoding='utf-8') as csvfile:
    fieldnames = ['CHEMBL_ID', 'SMILES', 'Solubility_value', 'Solubility_units', 'Solubility_doi', 'Assay_description']
    # 这里我们打算收集杂环分子的 ID,SMILES结构式,溶解度数据和单位,原始文献和这个数据的说明(比如测试条件),不需要的话可以按需删除
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()

    
    for assay in assays:
        activities = client.activity.filter(assay_chembl_id=assay['assay_chembl_id'])
        for activity in activities:
            try:
                molecule = client.molecule.get(activity['molecule_chembl_id'])
                
                # 判断这个分子是不是杂环分子
                is_heterocyclic = False
                if molecule.get('molecule_structures'):
                    smiles = molecule['molecule_structures'].get('canonical_smiles')
                    if smiles and any(atom in smiles for atom in ['n', 'o', 's', 'p','se']):
                        is_heterocyclic = True
                if is_heterocyclic:
                    try:
                        document = client.document.get(activity['document_chembl_id'])
                        doi = document.get('doi', "Not Available")
                    except Exception:
                        doi = "Not Available"
                    # 储存结果
                    writer.writerow({
                        'CHEMBL_ID': activity['molecule_chembl_id'],
                        'SMILES': smiles,
                        'Solubility_value': activity.get('value', "Not Available"),
                        'Solubility_units': activity.get('units', "Not Available"),
                        'Solubility_doi': doi,
                        'Assay_description': assay.get('description', "Not Available")
                    })
            except Exception as e:
                print(f"Error processing molecule {activity['molecule_chembl_id']}: {str(e)}")
                continue

print("Data collection completed. Results saved in 'heterocyclic_solubility_data.csv'.")

然后我们就能看到我们想要的结果了

使用RDKit生成无背景的化学结构式--附Python代码

前言

笔者发现传统的用RDKit画图画出来有白色背景,放在PowerPoint里面很不爽。参考了这一篇文献找到了代码。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from rdkit import Chem
from rdkit import rdBase
from rdkit.Chem import Draw
from rdkit.Chem.Draw import rdMolDraw2D
from rdkit.Chem import rdDepictor
rdDepictor.SetPreferCoordGen(True)
from rdkit.Chem import rdMolDescriptors
from rdkit.Chem import rdFMCS
from rdkit import DataStructs
import io
from PIL import Image

def show_png(data):
    bio = io.BytesIO(data)
    img = Image.open(bio)
    return img
smi = "CCCCCC" #以环己烷为例
drawer = rdMolDraw2D.MolDraw2DCairo(300,300) #可以自行调整图像尺寸
drawer.drawOptions().clearBackground = False
drawer.drawOptions().addStereoAnnotation = False
drawer.DrawMolecule(Chem.MolFromSmiles(smi))
drawer.FinishDrawing()
mol = drawer.GetDrawingText()
show_png(mol)

右键保存即可得到透明的png文件。