基于生成擴散模型的分子對接程序-DiffDock安裝及使用

歡迎瀏覽我的CSND博客! Blockbuater_drug …點擊進入


前言

分子對接是采用計算模擬的方式,預測受體與配體之間的結合模式,即Pose,以便于后續的Pose評估(打分)。傳統對接基于構象搜索,深度學習將分子對接抽象為回歸問題,但都沒有很好的解決對接準確性問題。
DiffDock來自MIT CSAIL的Regina教授和Tommi教授課題組的工作,他們將分子對接視為一種生成任務,并采用了時下在圖像生成等領域相當熱門的生成擴散模型(DGM)。
已有的測試顯示:DiffDock在已知的對接任務中取得了38%的成功率,對比最先進的深度學習模型(20%)和基于搜索的方法(23%)成功率有較大提升,同時速度也有3-12倍提升。對于被折疊的復合物結構,此前各種方法最大僅達到10.4%的對接成功率,而DiffDock仍達到了21.7%的成功率水平。

本文介紹DiffDock在Linux Ubuntu系統的安裝及使用。


一、DiffDock是什么?

在這里插入圖片描述在這里插入圖片描述

論文來源:DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking,arxiv.org/abs/2210.01776
代碼來源:https://github.com/gcorso/DiffDock

DiffDock的工作流程:將單獨的配體和蛋白質結構作為輸入,通過平移、旋轉和扭轉自由度上的反向擴散,對隨機采樣的初始姿態進行降噪,正確的通過置信度模型對采樣的Pose進行排序,以產生最終預測和置信度得分。

DiffDock的主要特點:

  1. 將分子對接任務定義為一個生成問題,并強調了以前深度學習方法的問題。
  2. 在配體姿態上建立了一個新的擴散過程,該過程對應于分子對接所涉及的自由度。
  3. 在PDBBind對接基準上實現了最優的Top1 準確率(RMSD<2A)達到38%,遠超此前的最佳搜索算法(23%)和深度學習方法(~20%)。
  4. 使用ESMFold生成近似的蛋白質apo結構,Top1 準確率(RMSD<2A)達到28%,幾乎是最準確基線的準確性的3倍。

與傳統對接方法及其他機器學習分子對接方法相比,在PDB共晶結構redock及無監督語言模型預測apo蛋白結構上實現準確度的SOTA:在這里插入圖片描述在這里插入圖片描述Diffdock在PDB共晶結構與ESMFold預測結構上對接,與gnina的比較:
(RMSD<1.5A時,正確率優于gnina的表現;在ESMFold預測結構上整體優勢更加明顯。)
在這里插入圖片描述
在實際場景中(未見受體),DiffDock優勢明顯,計算效率更高:
在這里插入圖片描述對于apo受體的柔性側鏈對接,DiffDock整體最優:
在這里插入圖片描述

二、DiffDock安裝步驟

1. 下載

不建議使用environment.yml直接創建diffdock環境,后續的ESM安裝會導致torch_geometric不可用,出現Segmentation fault (core dumped)。可以參考environment.yml安裝包的數量和名稱。

git clone https://kkgithub.com/gcorso/DiffDock.git

2.創建conda環境并安裝

由conda創建虛擬環境并安裝必要的包,最后配置ESM及pyg相關包。

STEP 1. 創建conda環境并配置

conda create -n diffdock_env python=3.9
conda activate diffdock_env
conda install pytorch==1.11.0 pytorch-cuda=11.7 -c pytorch -c nvidia
conda install pyarrow joblib

STEP 2. 配置ESM和OpenFold

python -m pip install PyYAML scipy "networkx[default]" biopython rdkit-pypi e3nn spyrmsd pandas biopandas
pip install "fair-esm[esmfold]"
pip install 'dllogger @ git+https://github.com/NVIDIA/dllogger.git'
pip install 'openfold @ git+https://github.com/aqlaboratory/openfold.git'

STEP 3. 檢查cuda和pytorch geometric安裝

輸入以下,查看torch安裝版本版本:

python -c "import torch; print(torch.__version__)"

輸出:

1.13.1+cu117

輸入以下,查看cuda安裝版本版本:

python -c "import torch; print(torch.version.cuda)"

輸出:

11.7

通過pyg 官網安裝pytorch geometric及附件,torch-1.13.1+cu117.html部分需要與上面輸出一致:

pip install  pyg_lib \torch_scatter==2.0.9 \torch_sparse==0.6.15 \torch_cluster==1.6.0 \torch_spline_conv==1.2.2 \torch_geometric==2.0.4 -f https://data.pyg.org/whl/torch-1.13.1+cu117.html

STEP 4. 檢查pytorch geometric library

保證torch_geometric能正常工作,檢查安裝

python -c "from torch_geometric.loader import DataLoader"

如果沒有返回信息,即成功。

三、 DiffDock使用

1. 單一配體+單一受體的復合物對接

簡單分子對接,DiffDock支持多種輸入方式,用 --protein_path定義受體pdb結構 或者 --protein_sequence定義字符串作為受體序列,用 --ligand 定義配體sdf文件或者smile名稱。
運行實例如下:

cd Diffdock
python -m inference \--protein_path data/1a0q/1a0q_protein_processed.pdb \--ligand "COc(cc1)ccc1C#N" \--out_dir results/user_predictions_small_pdb-smi \--inference_steps 20 \--samples_per_complex 40 \--batch_size 10 \--actual_steps 18 \--no_final_step_noise

結果保存在–out_dir指定的位置。

python -m inference \--protein_path data/1a0q/1a0q_protein_processed.pdb \--ligand data/1a0q/1a0q_ligand.sdf \--out_dir results/user_predictions_small_pdb-sdf \--inference_steps 20 \--samples_per_complex 40 \--batch_size 10 \--actual_steps 18 \--no_final_step_noise

結果保存在–out_dir指定的位置。

2. 多個配體+多個受體對接

需要由--protein_ligand_csv定義一個csv文件,按格式注明配體,受體的名稱或者對應文件路徑,示例文件位于data/protein_ligand_example_csv.csv,如下:
在這里插入圖片描述

complex_name:用于保存預測的名稱,可以留空
protein_path:.pdb文件的路徑,如果為空則使用sequence
ligand_description:SMILE或文件路徑
protein_sequence:如果protein_path為空,則使用ESMFold

運行命令如下:

python -m inference \--protein_ligand_csv data/protein_ligand_example_csv.csv \--out_dir results/user_predictions_small \--inference_steps 20 \--samples_per_complex 40 \--batch_size 10 \--actual_steps 18 \--no_final_step_noise

3. 查看對接Pose

pymol results/user_predictions_small/complex_0/rank1.sdf \data/1a0q/1a0q_protein_processed.pdb

在這里插入圖片描述

4. 重新訓練模型

對于受體結構已知的分子對接,可以直接使用Diffdock已訓練好的模型參數。
如果有需要,可以使用Diffdock提供的工具重新訓練模型,需要安裝esm獲得ESM2 embeddings,然后獲得model weights,再訓練score model 和confidence model,用于結構推理。
這部分可參閱README文件,此處不再描述。


總結

DiffDock可借助ESMFold實現靶點3D結構未知,從序列開始的分子對接,對接準確度優于已知方法。
本文介紹DiffDock在Linux Ubuntu系統的安裝及使用,為分子對接研究提供一種區別于傳統對接軟件的新方法。

參考資料

  1. https://github.com/gcorso/DiffDock
  2. https://blog.csdn.net/weixin_42486623/article/details/130617496
  3. https://zhuanlan.zhihu.com/p/665191390

歡迎瀏覽我的CSND博客! Blockbuater_drug …點擊進入

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697931.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uvm_reg_bus_op中byte_en詳解

在使用寄存器模型的adapter進行數據轉換時&#xff0c;會直接對uvm_reg_bus_op進行操作&#xff0c;其包含變量有操作類型、地址、數據等&#xff0c;除byte_en的描述不太清晰外&#xff0c;其他幾個都比較好懂。從字面意思來看&#xff0c;該變量似乎是對數據按字節操作進行使…

【RHCE】SHELL for循環練習

目錄 1.編寫腳本for1.sh,使用for循環創建20賬戶&#xff0c;賬戶名前綴由用戶從鍵盤輸入&#xff0c;賬戶初始密碼由用戶輸入&#xff0c;例如:test1、test2、test3、……、test10 2.編寫腳本for2.sh,使用for循環,通過ping命令測試網段的主機連通性&#xff0c;IP前3段由用戶…

江科大stm32學習筆記——【3-2】GPIO輸出:LED閃爍LED流水燈蜂鳴器

&#xff08;一&#xff09; 硬件連接 1.LED閃爍 LED燈正極連接面包板電源正極&#xff0c;LED負極連接單片機A0口 (也可以LED負極連面包板負極&#xff0c;LED正極連接單片機A0口) 跳線連接單片機3.3和面包板正極&#xff0c;連接單片機GND和面包板負極 2.LED流水燈 3.蜂鳴…

在UE5中制作UI環形進度條

在日常開發中&#xff0c;經常會有環形進度條UI的效果&#xff0c;例如技能CD時間、加載動畫等&#xff0c;本文將通過材質球節點實現該效果&#xff0c;相較于準備美術素材&#xff0c;這樣的做法更為方便&#xff0c;效果如下&#xff1a; 1.制作環狀效果材質函數 在內容面…

迭代器是干什么的?為什么需要他?

有時候&#xff0c;我們需要一個一個地訪問集合中的每個元素&#xff0c;就像你一個一個地拿出盒子里的玩具一樣。迭代器就像是一個指示器&#xff0c;可以幫助我們逐個訪問集合中的元素&#xff0c;這樣我們就可以處理集合中的每個元素了。 Hashtable是干嘛的&#xff1f;為什…

【云動世紀:Apache Doris 技術之光】

本文節選自《基礎軟件之路&#xff1a;企業級實踐及開源之路》一書&#xff0c;該書集結了中國幾乎所有主流基礎軟件企業的實踐案例&#xff0c;由 28 位知名專家共同編寫&#xff0c;系統剖析了基礎軟件發展趨勢、四大基礎軟件&#xff08;數據庫、操作系統、編程語言與中間件…

MySQL-七種SQL優化

一、插入數據 普通插入&#xff1a; 采用批量插入&#xff08;一次插入的數據不建議超過1000條&#xff09; insert into tb_test values(1,Tom),(3, Cat),(3, Jerry)....手動提交事務 start transaction; insert into tb_test values(1,Tom),(3, Cat),(3, Jerry); insert …

LeetCode 2878.獲取DataFrame的大小

DataFrame players: ------------------- | Column Name | Type | ------------------- | player_id | int | | name | object | | age | int | | position | object | | … | … | ------------------- 編寫一個解決方案&#xff0c;計算并顯示 players 的 行數和列數。 將結…

maven插件wagon-ssh、os-maven-plugin、buildnumber-maven-plugin使用詳解

文章目錄 前言一、os-maven-plugin的使用二、buildnumber-maven-plugin使用1、時間戳策略2、數字策略 三、wagon-ssh使用1、上傳文件/文件夾2、執行Linux命令或者shell腳本 總結 前言 有時我們在構建項目時&#xff0c;希望能自動生成版本號或者生成不同操作系統標識的版本后綴…

Java實戰:Spring Boot實現郵件發送服務

本文將詳細介紹如何在Spring Boot應用程序中實現郵件發送服務。我們將探討Spring Boot集成郵件發送服務的基本概念&#xff0c;以及如何使用Spring Boot和第三方郵件服務提供商來實現郵件發送。此外&#xff0c;我們將通過具體的示例來展示如何在Spring Boot中配置和使用郵件發…

RS?FSVA3000 信號與頻譜分析儀

R&SFSVA3000 信號與頻譜分析儀 非常適用于實驗室以及生產過程中的高要求信號分析任務。R&SFSVA3000 信號與頻譜分析儀的分析帶寬高達 1 GHz&#xff0c;并具有低至 –120 dBc/Hz 的相位噪聲和高動態范圍&#xff0c;適用于要求嚴格的 5G NR 測量應用。分析儀測量速度快…

代碼隨想錄算法訓練營第二天

● 今日學習的文章鏈接和視頻鏈接 ● 自己看到題目的第一想法 977.有序數組的平方 方法一&#xff1a; 思路&#xff1a; 先將數據所有數據平方將數組排序 代碼&#xff1a; class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vect…

vue后臺管理添加水印簡單方式watermark-package

詳情參考:https://www.npmjs.com/package/watermark-package 示例方法 <el-button type"primary" click"AddWatermark">添加水印</el-button><el-button type"primary" click"RemoveWatermark">清除水印</el-but…

Linux調試器——gdb的基礎使用

目錄 1.背景 2.指令的使用 2.1gdb的使用和退出 2.2顯示源代碼 2.3運行程序 2.4調試 1.打斷點 2.查斷點 3.去斷點 4.運行 5.關閉斷點 6.啟用斷點 7.逐過程 8.進入函數 9.顯示變量的值 1.背景 眾所周知&#xff0c;我們的程序發布有兩種&#xff0c;分別是debug模式和release模式…

18.貪心算法

排序貪心 區間貪心 刪數貪心 統計二進制下有多少1 int Getbit_1(int n){int cnt0;while(n){nn&(n-1);cnt;}return cnt; }暴力加一維前綴和優化 #include <iostream> #include <climits> using namespace std; #define int long long const int N2e510; in…

uni-app 經驗分享,從入門到離職(五)——由淺入深 uni-app 數據緩存

文章目錄 &#x1f4cb;前言?關于專欄 &#x1f3af;什么是數據存儲&#x1f9e9;數據存儲——存儲&#x1f4cc; uni.setStorage(OBJECT)&#x1f4cc; uni.setStorageSync(KEY,DATA) &#x1f9e9;數據存儲——獲取&#x1f4cc; uni.getStorage(OBJECT)&#x1f4cc; uni.g…

2024年【起重機司機(限橋式起重機)】找解析及起重機司機(限橋式起重機)考試總結

題庫來源&#xff1a;安全生產模擬考試一點通公眾號小程序 2024年【起重機司機(限橋式起重機)】找解析及起重機司機(限橋式起重機)考試總結&#xff0c;包含起重機司機(限橋式起重機)找解析答案和解析及起重機司機(限橋式起重機)考試總結練習。安全生產模擬考試一點通結合國家…

[AI]部署安裝有道QanyThing

前提條件&#xff1a; 1、win10系統更新到最新的版本&#xff0c;系統版本最好為專業版本 winver 查看系統版本&#xff0c;內部版本要大于19045 2、CPU開啟虛擬化 3、開啟虛擬化功能&#xff0c;1、2、3每步完成后均需要重啟電腦&#xff1b; 注&#xff1a;windows 虛擬…

CSS輕松學:簡單易懂的CSS基礎指南

css基礎 更多web開發知識歡迎訪問我的專欄>>> 01-CSS初體驗 層疊樣式表 (Cascading Style Sheets&#xff0c;縮寫為 CSS&#xff09;&#xff0c;是一種 樣式表 語言&#xff0c;用來描述 HTML 文檔的呈現&#xff08;美化內容&#xff09;。 書寫位置&#xff1a;…

基于HAL庫的STM32-ADC學習(附帶代碼)

1.前言 STM32ADC是一種模擬/數字轉換器&#xff0c;可以將模擬信號轉換為數字信號。STM32ADC有多個通道&#xff0c;可以選擇不同的輸入源、轉換模式、觸發方式和采樣時間。STM32ADC的轉換結果可以通過中斷、DMA或者寄存器讀取。 在本文中&#xff0c;我將介紹如何使用STM32C…