D3FG 是一個在口袋中基于功能團的3D分子生成擴散模型。與通常分子生成模型直接生成分子坐標和原子類型不同,D3FG 將分子分解為兩類組成部分:官能團和連接體,然后使用擴散生成模型學習這些組成部分的類型和幾何分布。
一、背景介紹
D3FG 來源于西湖大學工學院計算機科學與技術系的李子青教授課題組的工作:《Functional-Group-Based Diffusion for Pocket-Specific Molecule Generation and Elaboration》。文章鏈接:https://arxiv.org/abs/2306.13769?。該文章于 2024 年 3 月 18 日發表在 Arxiv 上。
當前基于結構的分子生成方法大多數是基于原子層面的,將原子視為基本組成部分,生成原子的位置和類型。但這些方法很難生成具有復雜結構的分子。為解決這一問題,作者提出了基于功能基團擴散的?D3FG?模型,用于特定口袋的分子生成和擴展。
D3FG?將分子分解為兩類組成部分:作為剛體的官能團和作為質量點的連接體。通過這兩類組件可以形成復雜的片段,增強配體-蛋白相互作用。具體而言,在擴散過程中,D3FG 將組件的位置、方向和類型的數據分布擴散到先驗分布中;在生成過程中,設計的等變圖神經網絡參數化的去噪器逐步去除這三個變量中的噪聲。
實驗評估結果顯示,D3FG 可以生成具有更真實的 3D 結構、對蛋白質靶點有競爭性親和力、并且具備更優藥物性質的分子。此外,D3FG 還作為分子優化新任務的解決方案,能夠根據現有配體和目標蛋白的熱點生成具有高親和力的分子。
二、模型介紹
相似的結構執行相似的功能是藥物-靶標識別領域的公認理念之一。據此可以通過將蛋白-配體相互作用抽象為藥效團,通過對齊相似的功能基團,從這些結構中提取藥物信息。將合適的功能基團嵌入藥效團可以增強配體-蛋白相互作用,從而提高藥物的效率。
當前基于結構的分子生成方法存在兩方面不足。一方面,它們很難生成能夠為靶標貢獻藥理學效應的真實官能團,另一方面是難以在蛋白質上下文信息的效率和充分性之間做到很好的平衡。
為解決上述問題,作者提出了基于官能團的擴散模型 D3FG,主要有如下貢獻:
(1)方法創新。作者將分子的官能團和蛋白質的氨基酸視為同一層次的片段,其中原子間的相對位置是固定的,如同剛體,并將單個原子表示為連接體。通過去噪過程逐步生成局部結構的位置、方向和原子類型變量。片段-連接體的設計使得結合系統成為異質圖,并提出了兩種解決方案,能夠在分子結構、結合親和力和藥物性質方面實現競爭性性能,同時通過利用更多特征充分編碼蛋白質上下文信息。
(2)建立數據集。基于?CrossDocked 2020 數據集,深入探索了分子官能團的相對位置和類型的細節,建立了一個可擴展的常見官能團數據庫。
(3)提出新任務。除了分子生成外,作者還提出了分子優化作為模型可以完成的另一個任務。作者使用片段熱點圖(FHM)對 CrossDocked 2020 中的蛋白-分子對進行預處理,以完成該任務。結果表明,D3FG?能夠基于參考分子生成具有高結合親和力的分子。
2.1 模型框架
D3FG 首先將分子分解為兩類組成部分:官能團和連接體,然后使用擴散生成模型學習這些組成部分的類型和幾何分布。
擴散模型通過構建兩個馬爾可夫過程來學習數據分布。第一個過程是前向擴散過程,逐漸添加噪音,直到噪音數據的分布接近先驗分布。另一個過程是生成去噪過程,逐步從采樣自先驗分布的數據中去除噪音,直到它們恢復到目標數據分布。
在前向過程中,單個官能團或連接體表示成獨熱編碼被隨機轉移到吸收狀態。在生成過程中,首先從吸收狀態中采樣出連接體和官能團,它們的類型均處于吸收狀態,然后從中按照一定的比例吧部分樣本的類型從吸收狀態轉化為預測狀態。
為了降低計算復雜度,作者將蛋白質上下文編碼到氨基酸級別。除了氨基酸類型之外,還使用了?C_{α}原子坐標和方向、每個原子在局部系統中的坐標以及三個扭轉角作為氨基酸內部特征。這些特征通過多層感知機(MLP)進行拼接和嵌入,形成氨基酸內嵌入向量。這些嵌入向量都是平移和旋轉不變的。
如下表所示,在采樣過程中,作者將蛋白質的位置信息和原子信息特征處理成模型輸入的形式,并從兩個訓練集獲得的經驗分布中采樣連接原子數和官能團數。從采樣的初始狀態逐步更新官能團和原子的狀態,進而更新生成的分子狀態。經過 T-1 個時間步后,確定生成分子官能團和原子的最終位置、類型及其旋轉矩陣。
氨基酸和功能基團都是由蛋白質和分子中的原子組成的片段,被視為剛體,而連接器是單個原子,被視為質點。因此,在結合圖中,節點處于不同的層次,連接也是不同種類的,從而導致圖的異構性。為此,作者提出了兩種生成方案:聯合生成方案和兩階段生成方案,如下圖所示。
在聯合生成方案中,作者將氨基酸、官能團和連接體視為同一層次,并使用單個神經網絡來預測和更新這三種變量。
在兩階段方案中,作者將氨基酸、官能團視為片段層次,而連接體視為原子層次,并使用兩個不同的神經網絡對轉移分布進行參數化。在第一階段,生成官能團,然后在第二階段生成單個原子作為連接體,將已經生成的官能團連接成一個完整分子。該方案類似于計算機輔助藥物設計過程(CADD),首先確定針對目標蛋白質的藥效團,將具有高活性的官能團嵌入其中,然后搜索含有這些官能團的潛在分子。
2.2 數據集、評價指標和基線模型
在實驗中,作者使用 CrossDocked 2020 進行評估。在現有的工作大多專注于原子級別的分子生成,而 D3FG 基于官能團生成,因此需要將分子劃分為官能團和連接體。作者選擇了 25 種最常見且結構穩定的官能團,它們部分展示于下圖。對于一些官能團,它們的結構中存在手性,作者將它們視為兩種不同的官能團。最終,為 CrossDocked 2020 構建了包含 27 種官能團(25 種中有兩種具有手性)的數據集,且這些官能團的內部結構被固定為剛體,確保大多數分子可以分解為數據集中的子結構。對于連接基體,選擇 {B, C, N, O, F, P, S, Cl, Br, I} 作為代表性的重原子。經過處理后,在實驗中,M_fg = 27 和 M_at = 10,對應 27 種官能團和 10 種原子的連接體。此外,通過結合圖中的片段-連接體劃分,圖神經網絡的消息傳遞節點數量平均減少至 53.62 個。
對于分子生成任務,訓練和評估的數據集按照 Pocket2Mol 和 TargetDiff 劃分。選擇了 2250 萬個低 RMSD(< 1?)且序列同一性小于 30% 的對接蛋白質結合復合物,最終選出 10 萬個口袋-配體復合物對,以 100 個新的復合物作為評估參考。
對于分子優化任務,藥效團信息通過計算目標蛋白的片段熱點圖(FHM)來提取。具體而言,FHM 描述了結合口袋中可能對結合親和力產生積極貢獻的區域。通過將分子放置在結合口袋中,可以根據結合復合物獲得每個官能團的熱點評分。官能團的熱點評分越高,對結合親和力的貢獻就越大。基于 Cross Docked 2020 中的 100,000 對口袋-配體復合物,作者計算了每個配體的官能團熱點評分,并根據這些評分選擇官能團。最終,基于 FHM 建立了新的分子優化數據集。
評價指標主要包括結構分析、結合親和力和藥物屬性三個方面。在結構分析方面,統計了生成分子種包含官能團的比例和頻率。其中,比例表示每個分子平均包含的指定官能團數量,頻率表示生成分子中指定官能團出現的統計頻率。均方誤差(MAE)作為整體指標,依據參考比例和生成比例計算;Jensen-Shannon散度(JSD)則依據參考頻率和生成頻率計算。MAE 和 JSD 越小,表明該方法的性能越好。
結合親和力方面使用了兩個評估指標:Vina 對接評分和 Gnina 對接評分。較低的 Vina 能量評分表明分子具有更好的結合親和力。Gnina 對接是一種基于深度學習的對接工具,會對結合親和力高的分子給出較高的評分。? Affinity 衡量的是生成的分子中結合親和力優于相應參考分子的百分比。
藥物屬性方面的評估指標包括 QED、SA、LogP 和 Lipinski 五規則的遵循情況。QED、SA 和 Lipinski 是三個偏好原子數量的指標。
為了性能比較,作者選擇了當前的 6 種基線模型和 D3FG 進行對比。LIGAN 作為基于 3D CNN 的方法,在規則網格上生成原子,并使用 VAE 作為其生成模型。3DSBDD、GraphBP 和 Pocket2Mol 都是基于 GNN 的方法,以自回歸的方式生成原子。DiffSBDD 和 TargetDiff 是基于擴散的兩種方法,在全原子級別生成分子,并使用等變 GNN 作為去噪器。提供了兩種生成方案,官能團和連接體聯合生成方案和兩階段生成方案,分別記作 D3FG(Joint) 和 D3FG(Stage)。作者選擇?Pocket2Mol?作為自回歸方法的代表,并選擇?DiffSBDD 和 TargetDiff?作為使用擴散模型的基準,因為這三種基線方法是最新的,并顯示出良好的經驗性能。
2.3 模型性能
D3FG 模型可以應用到基于口袋從頭生成分子和對參考分子優化兩個任務上,下面針對這兩個任務的性能分別展示評估結果。針對該任務,作者設置每種方法采樣 100 個分子,在 100 個測試蛋白體系上共生成 10000 對復合物。
2.3.1 分子生成任務
下表展示了在 Crossdocked 2020 數據集中頻率最高的前十個官能團的比例。Ref 是在訓練集中計算的結果。MAE(平均絕對誤差)是在 Ref. 和不同方法的比例之間計算得出。JSD(杰森-香農散度)是根據“頻率”計算的。相較于基線模型,D3FG 生成分子中的官能團分布與真實藥物分子更為相似,表明 D3FG 在生成具有真實藥物結構的分子方面表現出色。
接著,作者計算了鍵長分布的 JSD,以參考分子為基準與生成分子進行對比。符號 ‘-’、‘=’、‘:’ 分別代表單鍵、雙鍵和芳香鍵。JSD 的數值越小越好。從下表可以看出,D3FG(Stage) 和 TargetDiff 是最具有競爭力的方法。
下圖給出了詳細的原子類型頻率,下表展示了不同方法生成分子和參考分子原子類型的比較。綜合來看,D3FG(Stage) 在生成更具現實性的分子方面優于 D3FG(joint) ,并且其性能與 TargetDiff 具有競爭力。
2.3.2 分子優化任務
在分子優化中,考慮了兩種方案。第一種是移除具有最高熱點評分的官能團,并通過 D3FG 生成的官能團替換剩余的片段,將其表示為 D3FG(EHot)。第二種方案 D3FG(ECold) 則是替換具有最低熱點評分的官能團。下表中展示了 D3FG 通過這兩種方案優化后的分子指標。結果顯示,D3FG(EHot) 傾向于生成更多具有更高親和力的分子,而 D3FG(ECold) 優化的分子在結合親和力上與原始參考分子相比幾乎沒有差異。此外,在其他化學性質方面,優化后的分子與原始參考分子非常接近,因為兩者的差異僅在于一個官能團,而主要的分子骨架幾乎保持不變。
三、D3FG 評測
3.1 安裝環境
復制代碼項目:
git clone https://github.com/EDAPINENUT/CBGBench.git
使用項目提供的?environment.yml?創建?D3FG?環境并安裝基礎依賴庫(將yml文件中的名字手動改為?D3FG),命令如下:
conda env create -f environment.yml
conda activate D3FG
安裝?pytorch 和 torch_geometric:
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
conda install pyg pytorch-scatter pytorch-cluster -c pyg
安裝化學處理相關的依賴庫:
# install rdkit, efgs, obabel, etc.
pip install --use-pep517 EFGs
pip install biopython
pip install lxml
conda install rdkit openbabel tensorboard tqdm pyyaml easydict python-lmdb -c conda-forge
安裝對接相關的工具:
conda install -c conda-forge numpy swig boost-cpp sphinx sphinx_rtd_theme
python -m pip install git+https://github.com/Valdes-Tresanco-MS/AutoDockTools_py3
pip install meeko==0.1.dev3 scipy
conda install pdb2pqr vina
3.2 訓練模型
3.2.1 下載項目數據
作者把項目用到的數據保存在谷歌網盤,鏈接是?https://drive.google.com/drive/folders/1YulDlChalaIjqRJjCyOFSY1-KoZ-hYCP?。
D3FG 采用官能團和連接體兩階段生成方案。網盤中 pl_fg 文件夾中是預處理好的用于訓練官能團模型的數據,pl 文件夾中是訓練連接體模型的數據。這兩個文件夾的數據和?split_by_name_10m.pt?下載后放在項目 .data/ 文件夾中。./data 文件夾的目錄如下:
.
|-- pl
| |-- crossdocked_name2id.pt
| |-- crossdocked_v1.1_rmsd1.0_pocket10_processed_fullatom.lmdb
| `-- crossdocked_v1.1_rmsd1.0_pocket10_processed_linker.lmdb
|-- pl_fg
| |-- crossdocked_name2id_funcgroup.pt
| `-- crossdocked_v1.1_rmsd1.0_pocket10_processed_funcgroup.lmdb
`-- split_by_name_10m.pt2 directories, 6 files
3.2.2 訓練官能團模型
整個項目需要分別訓練官能團模型和連接體模型。首先訓練官能團模型,具體命令如下:
python train.py \--config ./configs/denovo/train/d3fg_fg.yml \--logdir ./logs/denovo/d3fg_fg
--config?./configs/denovo/train/d3fg_fg.yml 指定訓練的配置文件。--logdir ./logs/denovo/d3fg_fg 指定訓練記錄和模型保存的位置。官能團訓練的 batch_size 設置為 40,最大迭代次數設置為 500000,顯存占用在 18 - 22 GB 范圍內有一定波動,具體配置如下:
model:type: difffgencoder:type: itatransformernode_feat_dim: 256n_heads: 16num_layers: 9generator:pos_schedule:type: sigmoidbeta_start: 1.e-7beta_end: 2.e-3rot_schedule:type: cosinecosine_s: 0.01fg_schedule: type: cosinecosine_s: 0.01num_diffusion_timesteps: 1000time_sampler: symmetricembedder:type: fgemb_dim: 256 #emb_dim should equal to node_feat_dimfg:type: linearresidue:type: framedata:train: !include ../common/fg_data_train.ymlfollow_batch: - protein_type_fg- ligand_type_fgtrain:loss_weights:pos: 1.0rot: 1.0fg: 100.0max_iters: 500000report_freq: 100batch_size: 40seed: 2022max_grad_norm: 8.0optimizer:type: adamlr: 5.e-4weight_decay: 0.0beta1: 0.95beta2: 0.999scheduler:type: plateaufactor: 0.6patience: 10min_lr: 1.e-6eval:val_freq: 1000metrics:- name: auroctrue_key: v0pred_key: c_predmask_key: mask_gentag: fg
官能團模型訓練設置最大迭代次數為 500000 次,訓練花費時間約 30 個小時。訓練記錄文件以及模型保存在?./logs/denovo/d3fg_fg/selftrain 中,訓練的最好的模型是 ./logs/denovo/d3fg_fg/selftrain/checkpoints/45000.pt 。
3.2.3 訓練連接體模型
訓練連接體模型,--config ./configs/denovo/train/d3fg_linker.yml 指定配置文件,--logdir ./logs/denovo/d3fg_linker 指定訓練記錄和模型的保存位置。具體命令如下:
python train.py \--config ./configs/denovo/train/d3fg_linker.yml \--logdir ./logs/denovo/d3fg_linker
--config ./configs/denovo/train/d3fg_linker.yml?指定訓練的配置文件。--logdir ./logs/denovo/d3fg_linker 指定訓練記錄和模型保存的位置。官能團訓練的 batch_size 設置為 4,最大迭代次數設置為 5000000,顯存占用在 18 - 22 GB 范圍內有一定波動,訓練官能團的配置文件?./configs/denovo/train/d3fg_linker.yml 具體內容如下:
model:type: targetdiffencoder:type: unitransformernode_feat_dim: 128n_heads: 16num_layers: 9generator:pos_schedule:type: sigmoidbeta_start: 1.e-7beta_end: 2.e-3atom_schedule: type: cosinecosine_s: 0.01num_diffusion_timesteps: 1000time_sampler: symmetricembedder:type: faemb_dim: 128 #emb_dim should equal to node_feat_dimatom:type: linearresidue:type: lineardata:train: !include ../common/linker_data_train.ymlfollow_batch: - protein_element- ligand_elementtrain:loss_weights:pos: 1.0rot: 1.0atom: 100.0max_iters: 5000000report_freq: 100batch_size: 4seed: 2022max_grad_norm: 8.0optimizer:type: adamlr: 5.e-4weight_decay: 0.0beta1: 0.95beta2: 0.999scheduler:type: plateaufactor: 0.6patience: 10min_lr: 1.e-6eval:val_freq: 1000metrics:- name: auroctrue_key: v0pred_key: c_predmask_key: mask_gen
使用了作者重新處理的數據,連接體模型可以正常訓練。默認設置最大迭代次數為 5000000,
根據記錄文件的平均迭代速度,預計訓練到最大迭代次數需要約 250 個小時,大概 10 天,可以到 Loss 基本不變的時候提前結束訓練。
3.3 分子生成案例測試
我們使用上一小節訓練好的官能團模型和連接體模型來在項目的內置案例上生成分子。訓練好的兩個模型分別是?./logs/denovo/d3fg_fg/selftrain/checkpoints/45000.pt 和 ./logs/denovo/d3fg_linker/selftrain/checkpoints/4271000.pt 。
3.3.1 內置案例
項目提供 ADRB1 和 DRD3 靶點作為測試案例,提供處理好的數據,在谷歌網盤中,如下所示。鏈接為:https://drive.google.com/drive/folders/1YulDlChalaIjqRJjCyOFSY1-KoZ-hYCP?。下載 case_study 文件夾,保存到 ./data 文件夾中。
ADRB1 靶點使用的蛋白質是 2VT4.pdb ,參考配體并不包含在晶體結構中,而是作者挑選的一個活性分子,活性分子在口袋中的結構如下所示。該口袋位于蛋白的表面。
活性分子的 2D 結構如下:
DRD3 靶點使用的蛋白質是 3PBL.pdb ,參考配體并不包含在晶體結構中,而是作者挑選的一個活性分子,活性分子在口袋中的結構如下所示。口袋是多個 β-螺旋結構形成的小空間。
活性分子的 2D 結構如下:
使用上述訓練好的模型針對內置案例生成分子,配置使用項目提供的默認配置文件?./configs/denovo/casestudy/d3fg_fg.yml ,生成分子保存在 ./results/denovo 文件夾中。
首先生成分子的官能團,具體命令如下:
python sample.py \--config ./configs/denovo/casestudy/d3fg_fg.yml \--out_root ./results/denovo \--tag selftrain \--checkpoint 45000
./configs/denovo/casestudy/d3fg_fg.yml 配置文件中設置輸入結構的文件夾,基于口袋生成 100 個分子。具體配置如下:
model:type: difffgcheckpoint: ./logs/denovo/d3fg_fg/selftrain/checkpoints/45000.ptdata:test: name: pl_fgraw_path: ./data/case_studysplit_path: ./data/case_study/split_by_name.ptprocessed_dir: ./data/case_study/processed/transform:- type: select_fg- type: remove_ligand- type: featurize_protein_fgmode: fg_only- type: center_frame_poscenter_flag: protein- type: assign_fgnumdistribution: prior_distcond- type: assign_fgtypedistribution: uniformmode: fg_only- type: assign_fgposdistribution: gaussian- type: assign_fgoridistribution: uniform- type: mergekeys: - protein- ligandfollow_batch: - protein_type_fg- ligand_type_fgsampling:seed: 2022num_samples: 100translate: falsefg2mol:basic_mode: true
ADRB1 和 DRD3 兩個靶點同時生成,生成分子的官能團信息分別保存在 ./results/denovo/d3fg_fg/selftrain/adrb1_act/adrb1_active_pocket10 和 ./results/denovo/d3fg_fg/selftrain/drd3_act/drd3_active_pocket10 。生成官能團的過程顯存占用約 3 GB,用時約 15 分鐘。
接著使用上述訓練好的連接體模型把生成的官能團連接成完整的分子。
使用項目提供的連接體配置文件?./configs/denovo/casestudy/d3fg_linker.yml ,生成分子的保存路徑為 ./results/denovo/,具體命令如下:
python sample.py \--config ./configs/denovo/casestudy/d3fg_linker.yml \--out_root ./results/denovo/ \--tag selftrain \--checkpoint 4271000
./configs/denovo/casestudy/d3fg_linker.yml 配置文件設置上一步生成的官能團信息文件路徑,重構分子結構?reconstruct 設置為 True,輸出生成分子的 SDF 結構,具體配置信息
model:type: targetdiffcheckpoint: ./logs/denovo/d3fg_linker/selftrain/checkpoints/4271000.pt
data:test: name: pl_fgraw_path: ./data/case_studysplit_path: ./data/case_study/split_by_name.ptprocessed_dir: ./data/case_study/processed/transform:- type: select_linker- type: featurize_protein_fa- type: remove_ligand- type: center_poscenter_flag: protein- type: load_ctxctx_path: ./results/denovo/d3fg_fg/selftrainmode: basic- type: assign_linkernumdistribution: prior_distcond- type: assign_atomtypedistribution: uniformmode: basic- type: assign_molposdistribution: gaussian- type: merge_ctx_gen- type: mergekeys: - protein- ligandfollow_batch: - protein_element- ligand_elementsampling:seed: 2022num_samples: 100translate: truereconstruct:basic_mode: true
ADRB1 和 DRD3 兩個靶點同時生成,生成分子的結構文件分別保存在 ./results/denovo/d3fg_linker/selftrain/adrb1_act/adrb1_active_pocket10 和 ./results/denovo/d3fg_linker/selftrain/drd3_act/drd3_active_pocket10 。生成官能團的過程顯存占用約 5 GB,生成連接體重構分子構象的過程比較費時,用時約 20 個小時。ADRB1 和 DRD3 兩個靶點最終分別生成 54 個和 18 個分子。
D3FG 在分子生成 ADRB1 體系上生成的分子如下:
D3FG_adrb1
qvina score 排名前 3 的分子的 2D 結構如下,對應的 qvina score 分數分別為 -7.9, -7.8, -7.7:
qvina score 排名前 3 的分子在口袋中的 Pose 如下,紫紅色的是參考分子,藍色的是生成分子,該口袋位于蛋白表面。
模型針對 adrb1 口袋生成的分子質量不高,部分生成分子和蛋白質存在空間沖突問題,部分生成分子包括大環結構、長鏈結構、并環結構等復雜結構。
D3FG 在 DRD3 所有生成的分子如下:
D3FG_drd3
qvina score 排名前 3 的分子的 2D 結構如下,對應的 qvina score 分數分別為 -8.6, -7.8, -7.5:
qvina score 排名前 3 的分子在口袋中的 Pose 如下,紫紅色的是參考分子,藍色的是生成分子,該口袋位于蛋白表面。
和 adrb1 類似,模型針對 drd3 口袋生成的分子質量也不高,部分生成分子和蛋白質存在空間沖突問題,部分生成分子包括長鏈結構、并環結構等復雜結構。
3.3.2 作者提供的 checkpoint 生成結果
由于早期作者沒有提供訓練好的模型文件,測試案例使用的是我們自己訓練的模型。在作者更新了GitHub 版本以后,提供了訓練好的checkpoint。我重新git clone 了新的項目代碼,但是在運行分子生成時,出現了如下錯誤:
[2025-05-28 16:28:23,611::sample::INFO] Loading model config and checkpoints: ./CKPT/d3fg_fg/10000.pt
Traceback (most recent call last):File "/workspace/xxx/projects/D3FG/sample.py", line 245, in <module>main()File "/workspace/xxx/projects/D3FG/sample.py", line 155, in mainmodel = get_model(cfg_ckpt.model).to(args.device)^^^^^^^^^^^^^^^^^^^^^^^^^File "/workspace/xxx/projects/D3FG/repo/models/_base.py", line 12, in get_modelreturn _MODEL_DICT[config.type](config)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/workspace/xxx/projects/D3FG/repo/models/diffusion/difffg.py", line 62, in __init__self.denoiser = get_e3_gnn(cfg.encoder, num_classes = self.num_classes)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/workspace/xxx/projects/D3FG/repo/modules/e3nn/__init__.py", line 18, in get_e3_gnnraise ValueError(f'Unknown model type: {cfg.type}')
ValueError: Unknown model type: ipatransformer
上述報錯來源于代碼與checkpoint的不匹配,改不動。因此,只能放棄這部分的測試。
四、總結
本研究提出了一種基于官能團的擴散模型 D3FG,用于在 3D 空間中生成以蛋白質結構為背景的分子。聯合生成和兩階段生成方案分別形成了 D3FG 的兩種變體。文章指出,通過兩階段生成方案生成的分子表現出更為現實的結構、具有競爭力的結合性能以及更好的藥物屬性。此外,在分子優化任務中,D3FG 也能夠生成具有良好結合親和力的分子。然而,仍然存在一些局限性。首先,官能團數據集的規模仍然較小,未來將進一步擴展。其次,所生成分子的結合親和力還有待提升,因為其他擴散模型在結合性能方面甚至表現得更好。
但是我們使用自己訓練的 checkpoint 發現生成的分子質量差,結構很奇怪,3D構象也很奇怪,同時,生成的小分子和蛋白之間存在嚴重的碰撞。我們 git clone 了新的項目并下載作者新的 checkpoint 但是出現了原子類型的報錯,因此測試暫停了。
此外,因為作者沒有提供從蛋白pdb文件開始的分子生成,而是使用預處理好的文件,因此,我們無法使用我們常見的3WZE案例進行測試,只能使用作者的默認案例。在實際的AIDD項目中,也無法使用這個項目的進行分子生成。