机器学习开源分子生成系列(1)-DeepFrag的本地部署及使用

欢迎浏览我的CSND博客! Blockbuater_drug ...进入

文章目录

  • 前言
  • 一、DeepFrag是什么?
  • 二、conda中安装DeepFrag CLI环境
      1. 创建环境并激活
      1. 下载pre-trained model
      1. DeepFrag CLI 使用方法
      • 必需参数:
      • 可选参数:
      1. DeepFrag CLI 使用案例
      • 4.1 片段替换
      • 4.2 片段添加
  • 总结
  • 参考资料

前言

本文提供了开源程序DeepFrag的在本地conda版本的部署及使用方法,满足用户避免数据上传到web app使用。

一、DeepFrag是什么?

github代码:https://github.com/durrantlab/deepfrag

介绍文章:https://doi.org/10.1021/acs.jcim.1c00103

web app:http://durrantlab.com/deepfrag

DeepFrag是一个基于片段的先导分子优化程序。DeepFrag将分子生成看作是分类问题,移除配体受体复合物中的一个配体片段,考虑配体片段复合物建立机器学习模型,生成新的分子。采用Binding MOAD database 38702个复合物和6522个片段作为数据集,将复合物3D像素画处理后,在3D卷积网络中训练模型,将模型输出与已知片段分子描述符(使用RDKit 描述符)比较进而预测分子。这样的好处是有别于经典的分类模型,是一个向量打分和概率的输出。

DeepFrag将对输出结果采用smina打分(vina的一个衍生版本),单位kcal/mol,将生成分子按照打分排序给出。

训练数据集:

片段(ligand fragment)定义:

(1)将配体一分为二,不切断环系

(2)切到的最小片段至少包含一个非氢原子

(3)小片段分子量小于150

(4)切断点在受体原子4A范围内

模型结果:

总之,DeepFrag是一个强大的分子生成程序,它利用深度学习技术来预测有机化合物的反应路径和合成规划,并提供药理性质的预测功能。它对药物设计师在开发新药物方面具有重要的帮助作用。

二、conda中安装DeepFrag CLI环境

以下是在conda环境中部署DeepFrag运行需要的环境,即DeepFrag CLI运行需要的配置。

安装环境:Ubuntu 22.04, CUDA runtime版本11.8。

1. 创建环境并激活

powershell 复制代码
conda create -n deepfrag_env
conda activate deepfrag_env

安装依赖包:

powershell 复制代码
pip install -r requirements.txt

再额外安装prody和joblib:

powershell 复制代码
pip install prody joblib

安装pytorch(根据本地机器的CUDA版本安装,也可以只安装CPU版本):

powershell 复制代码
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118

检查pytorch安装:

powershell 复制代码
python -c "import torch; print(torch.__version__)"
python -c "import torch; print(torch.version.cuda)"

输出类似以下即为正常:

powershell 复制代码
2.1.2+cu118
11.8

DeepFrag运行环境安装测试:

powershell 复制代码
bash ./test_installation.sh

输出一系列片段的smiles。

2. 下载pre-trained model

测试安装时会提醒下载Pre-trained DeepFrag model和Fingerprint library,确认即可。

也可从安装包文件夹运行:

powershell 复制代码
python3 deepfrag.py

即可激活pre-trained model下载,位置在 .store,是一个隐藏文件。

3. DeepFrag CLI 使用方法

powershell 复制代码
python3 deepfrag.py <options>

必需参数:

通过文件或者id定义受体配体:

powershell 复制代码
    --receptor <rec.pdb> --ligand <lig.pdb>
    --pdb <pdbid> --resnum <resnum>

定义连接点原子名称,或者xyz坐标

powershell 复制代码
		--cname <name> 
    --cx <x> --cy <y> --cz <z>

可选参数:

使用DeepFrag删除需要替换片段:

powershell 复制代码
		--rname <name> 
    --cx <x> --cy <y> --cz <z>

输出为csv文件,包含fragment rank, score 和SMILES,如果不定义则输出到屏幕:

powershell 复制代码
		--out <out.csv>

其它可选参数:

powershell 复制代码
		--full :输出替换后的整个分子的smiles
		--cpu /--gpu:使用CPU或者GPU 
		--num_grids <num>:像素生成格旋转次数,默认为4,增加将耗时,一般用文献中测试的 32
		--top_k <k>: 输出数量默认为25,-1全部输出		

4. DeepFrag CLI 使用案例

4.1 片段替换

在完整配体-受体复合物上实现片段替换,需要定义连接点 (cname or cx/cy/cz) ,以及删除片段的一个原子 (rname or rx/ry/rz)。

替换咪唑甲酸:

powershell 复制代码
python3 deepfrag.py --pdb 2xp9 --resnum 1165 --cname C10 --rname C12

替换苯环B(图中右侧):

powershell 复制代码
python3 deepfrag.py --pdb 2xp9 --resnum 1165 --cname C1 --rname C2

替换苯环C(图中左侧):

powershell 复制代码
python3 deepfrag.py --pdb 2xp9 --resnum 1165 --cname C18 --rname C19

运行结果,直接显示:
使用 --out out_name.csv 可保存到文件。

结果按照score 排序。

4.2 片段添加

在已知母核上添加片段,相当于DeepFrag替换了氢原子。

这是新冠病毒主蛋白酶的结合分子,结构较小,在C09原子分子上添加基团:

powershell 复制代码
python3 deepfrag.py --pdb 5rgh --resnum 404 --cname C09 --full --out Mpro-C09.csv

查看结果:
--full模式输出结果并没有给出"母核"的键级,所以只能看到链接后的大致结构,可以采用其他连接方法,将生成片段接上去。


总结

本文提供了开源程序DeepFrag的在本地conda版本的部署及使用方法,满足用户避免数据上传到web app使用的需求。

参考资料

  1. https://github.com/durrantlab/deepfrag
  2. https://doi.org/10.1039/D1SC00163A
  3. https://doi.org/10.1021/acs.jcim.1c00103
欢迎浏览我的CSND博客! Blockbuater_drug ...点击进入
相关推荐
123461615 分钟前
互联网大厂Java面试:从Spring Boot到微服务的探索
java·数据库·spring boot·微服务·面试·mybatis·orm
乌恩大侠6 分钟前
英伟达开源了其 Aerial 软件,以加速 AI 原生 6G 的发展。
人工智能·开源
爱奥尼欧20 分钟前
【Linux笔记】网络部分——网络层IP协议
linux·网络·笔记
一 乐22 分钟前
农产品销售系统|农产品电商|基于SprinBoot+vue的农产品销售系统(源码+数据库+文档)
java·javascript·数据库·vue.js·spring boot·后端·农产品销售系统
埃伊蟹黄面27 分钟前
告别手动编译:用Makefile自动化你的Linux项目
linux·服务器
Once_day31 分钟前
Linux错误(7)接口处于Down状态不通告IPv6地址变更事件
linux·运维·服务器
任风雨34 分钟前
15.1.2.linux常见操作用例
linux·服务器
攀小黑35 分钟前
docker 容器内nacos(若依plus打包)连接另一台内网服务器显示数据库连接失败
服务器·数据库·docker
七月稻草人44 分钟前
Rust 与数据库连接池的集成:安全与性能的深度耦合
数据库·安全·rust
Andy44 分钟前
Mysql基础2
android·数据库·mysql