机器学习开源分子生成系列(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 ...点击进入
相关推荐
鱼饼6号1 分钟前
Prometheus 上手指南
linux·运维·centos·prometheus
小菜yh4 分钟前
关于Redis
java·数据库·spring boot·redis·spring·缓存
Asher Gu7 分钟前
Linux系统编程入门 | 模拟实现 ls -l 命令
linux
Microsoft Word24 分钟前
数据库系统原理(第一章 数据库概述)
数据库·oracle
c无序24 分钟前
【Linux进程控制】进程程序替换
linux
华为云开源34 分钟前
openGemini 社区人才培养计划:助力成长,培养新一代云原生数据库人才
数据库·云原生·开源
羊小猪~~1 小时前
深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)
人工智能·python·深度学习·学习·算法·机器学习·cnn
小安运维日记3 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
kejijianwen4 小时前
JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
服务器·数据库·oracle
编程零零七4 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql