歡迎瀏覽我的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的主要特點:
- 將分子對接任務定義為一個生成問題,并強調了以前深度學習方法的問題。
- 在配體姿態上建立了一個新的擴散過程,該過程對應于分子對接所涉及的自由度。
- 在PDBBind對接基準上實現了最優的Top1 準確率(RMSD<2A)達到38%,遠超此前的最佳搜索算法(23%)和深度學習方法(~20%)。
- 使用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系統的安裝及使用,為分子對接研究提供一種區別于傳統對接軟件的新方法。
參考資料
- https://github.com/gcorso/DiffDock
- https://blog.csdn.net/weixin_42486623/article/details/130617496
- https://zhuanlan.zhihu.com/p/665191390
歡迎瀏覽我的CSND博客! Blockbuater_drug …點擊進入 |
---|