DGL | 基於深度學習框架DGL的分子圖初探

2021-03-02 DrugAI

紐約大學、紐約大學上海分校、AWS上海研究院以及AWS MXNet Science Team共同開源了一個面向圖神經網絡及圖機器學習的全新框架,命名為Deep Graph Library(DGL)。

DGL必須和目前的主流的深度學習框架(Pytorch, MXNet, Tensorflow等)無縫銜接。從而實現從傳統的tensor運算到圖運算的自由轉換。

DGL應該提供最少的API以降低用戶的學習門檻。

在保證以上兩點的基礎之上,DGL能高效並透明地並行圖上的計算,以及能很方便地擴展到巨圖上。

個人關注的是藥物模型,用於分子性質預測,生成和優化的各種模型,DGL 致力於將GNN(圖形神經網絡)應用於化學領域,並且作為分子生成模型,DGMG(圖形的深度生成模型)和JT-VAE(連接樹變分自動編碼器),並且發行說明中有一個使用DGMG的非常簡單的示例。

為了評估候選藥物分子,我們需要了解其性質和活性。實際上,這主要是通過溼實驗室實驗來實現的。我們可以將該問題轉換為回歸或分類問題。實際上,由於標記數據的缺乏,這可能非常困難。

指紋已經成為化學信息學中廣泛使用的概念。化學家開發了一種規則,將分子轉換為二進位字符串,其中每個位都表明存在或不存在特定的子結構。指紋的發展使分子的比較容易得多。以前的機器學習方法主要基於分子指紋來開發。

圖神經網絡使數據驅動的原子、鍵和分子圖拓撲結構之外的分子表示成為可能,這可以看作是學習指紋。

圖的深度生成模型(DGMG,Deep Generative Models of Graphs):通過逐步添加原子和鍵來進行圖分布學習的非常通用的框架。

分子圖生成(JTNN,Junction Tree Variational Autoencoder for Molecular Graph Generation)的連接樹變分自動編碼器 :JTNN能夠逐步擴展分子,同時保持每一步的化學價。它們可用於分子生成和優化。

導入庫

import os

import numpy as np

import pandas as pd

from rdkit import Chem

from rdkit.Chem import RDConfig

import torch

import torch.nn as nn

import torch.optim as optim

import torch.nn.functional as F

from torch.utils.data import DataLoader

from torch.utils.data import Dataset

import dgl

import dgl.function as fn

from dgl import DGLGraph

定義元素列表

ELEM_LIST = ['C', 'N', 'O', 'S', 'F', 'Si', 'P', 'Cl', 'Br', 'Mg', 'Na', 'Ca', 'Fe', 'Al', 'I', 'B', 'K', 'Se',

'Zn', 'H', 'Cu', 'Mn', 'unknown']

ATOM_FDIM = len(ELEM_LIST) + 6 + 5 + 4 + 1 # 23 + degree, charge, is_aromatic = 39

代碼來自dgl的 junction tree,生成分子結構圖

def get_mol(smiles):

mol = Chem.MolFromSmiles(smiles)

if mol is None:

return None

Chem.Kekulize(mol)

return mol

def onek_encoding_unk(x, allowable_set):

if x not in allowable_set:

x = allowable_set[-1]

return [x == s for s in allowable_set]

def atom_features(atom):

return (torch.Tensor(onek_encoding_unk(atom.GetSymbol(), ELEM_LIST)

+ onek_encoding_unk(atom.GetDegree(), [0,1,2,3,4,5])

+ onek_encoding_unk(atom.GetFormalCharge(), [-1,-2,1,2,0])

+ onek_encoding_unk(int(atom.GetChiralTag()), [0,1,2,3])

+ [atom.GetIsAromatic()]))

def mol2dgl_single(mols):

"""

inputs

mols: a list of molecules

outputs

cand_graphs: a list of dgl graphs

"""

cand_graphs = []

for mol in mols:

n_atoms = mol.GetNumAtoms()

g = DGLGraph()

node_feats = []

for i, atom in enumerate(mol.GetAtoms()):

assert i == atom.GetIdx()

node_feats.append(atom_features(atom))

g.add_nodes(n_atoms)

bond_src = []

bond_dst = []

for i, bond in enumerate(mol.GetBonds()):

a1 = bond.GetBeginAtom()

a2 = bond.GetEndAtom()

begin_idx = a1.GetIdx()

end_idx = a2.GetIdx()

bond_src.append(begin_idx)

bond_dst.append(end_idx)

bond_src.append(end_idx)

bond_dst.append(begin_idx)

g.add_edges(bond_src, bond_dst)

g.ndata['h'] = torch.Tensor([a.tolist() for a in node_feats])

cand_graphs.append(g)

return cand_graphs

載入數據,轉換smiles到分子圖

smiles = ['OCCS(=O)(=O)c1no[n+]([O-])c1c2ccccc2', 'Cl.CCCC1(C)CC(=O)N(CCCCN2CCN(CC2)c3nsc4ccccc34)C(=O)C1']

mols = []

for sm in smiles:

mol = get_mol(sm)

mols.append(mol)

graphs = mol2dgl_single(mols)

查看第一個分子的鄰接矩陣

graphs[0].adjacency_matrix().to_dense()

輸出領接矩陣的每個節點

for a in graphs[1].adjacency_matrix().to_dense():

print(a)

主頁地址:http://dgl.ai

項目地址:https://github.com/dmlc/dgl

初學者教程:https://docs.dgl.ai/tutorials/basics/index.html

所有示例模型的詳細從零教程:https://docs.dgl.ai/tutorials/models/index.html

DrugAI

( 掃描下方二維碼訂閱獲取最新消息!)

本文為DrugAI原創,如需轉載,請在公眾號後臺留言。

相關焦點

  • NYU、AWS聯合推出:全新圖神經網絡框架DGL正式發布
    把圖和深度學習結合的意義正在於突破這個局限。由於結構數據的普適性,Google, Deepmind, Pinterest 等公司也紛紛在這一領域發力。除了數據,深度神經網絡模型的發展也有著更加動態和更加稀疏的趨勢。這源於目前深度神經網絡對於算力的需求已經達到了一個驚人的地步。同時,我們觀察到現在還沒有一個框架既高效,又好用,能幫助開發新的模型。
  • DGL-LifeSci:面向化學和生物領域的 GNN 算法庫
    基於深度圖學習框架DGL環境準備PyTorch:深度學習框架DGL:基於PyTorch的庫,支持深度學習以處理圖形RDKit:用於構建分子圖並從字符串表示形式繪製結構式DGL-LifeSci:面向化學和生物領域的 GNN 算法庫 DGL安裝conda
  • 專欄 | 手把手教你用DGL框架進行批量圖分類
    在這個教程裡,我們將一起學習:如何使用 DGL 批量化處理大小各異的圖數據訓練圖神經網絡完成一個簡易的圖分類任務簡易圖分類任務這裡我們設計了一個簡單的圖分類任務。在 DGL 裡我們實現了一個迷你圖分類數據集(MiniGCDataset)。它由以下 8 類圖結構數據組成。
  • 專欄| 手把手教你用DGL框架進行批量圖分類
    在這個教程裡,我們將一起學習:如何使用 DGL 批量化處理大小各異的圖數據訓練圖神經網絡完成一個簡易的圖分類任務將 n 張小圖打包在一起的操作可以看成是生成一張含 n 個不相連小圖的大圖。下圖的可視化從直覺上解釋了 dgl.batch 的功能。
  • 一文讀懂圖神經網絡
    圖神經網絡介紹什麼是圖神經網絡圖神經網絡(Graph Neural Networks, GNNs)是基於圖結構的深度學習方法,近期被廣泛應用到各類圖像、自然語言處理等任務上。二、圖神經網絡庫相比於傳統的基於鄰接矩陣的圖神經網絡實現方法,目前完成度較好的圖神經網絡框架主要是基於PyTorch和MXNet的DGL (Deep Graph Library)和PyG (PyTorch Geometric)。
  • 比DGL快14倍:PyTorch圖神經網絡庫PyG上線了
    項目連結:https://github.com/rusty1s/pytorch_geometricLeCun評價:一個快速且漂亮的幾何深度學習庫(適用於圖神經網絡與其他不規則結構)PyTorch Geometric
  • arXiv | TorchMD:一種用於分子模擬的深度學習框架
    文章中提出了」TorchMD「,一個混合經典和機器學習勢的分子模擬的框架。文章中所有的力計算,包括鍵、角、二面體、Lennard-Jones和庫侖相互作用,都用PyTorch數組和運算表示。此外,TorchMD 還支持學習和模擬神經網絡勢。使用了標準的Amber全原子模擬進行驗證,學習從頭算勢,執行端到端訓練,最後學習和模擬了一個蛋白質摺疊的粗粒度模型。
  • 圖神經網絡的ImageNet?史丹福大學等開源百萬量級OGB基準測試數據集
    從數據集的類型來看,涵蓋了現有的幾大需要圖表示學習的領域:生物學/分子化學、自然語言處理,以及商品推薦系統網絡等。此外,這些圖數據的量也非常大。例如,ogbn-wiki 的數據量已達到百萬級別(節點),而最小的 ogbn-proteins 也有 100K 了。這和之前的很多圖數據相比都顯得更加龐大,因此也能更好地評價模型的性能表現。
  • 基於OpenGL ES的深度學習框架編寫
    背景項目組基於深度學習實現了視頻風格化和人像摳圖的功能,但這是在PC/服務端上跑的,現在需要移植到移動端,因此需要一個移動端的深度學習的計算框架
  • 圖深度學習入門教程(六)——注意力機制與圖注意力
    摘要:深度學習還沒學完,怎麼圖深度學習又來了?別怕,這裡有份系統教程,可以將0基礎的你直接送到圖深度學習。
  • 王敏捷 - 深度學習框架這十年!
    強調了深度學習框架的重要性與推動因素,介紹了3位ACM人李沐、陳天奇和他一起將各自的技術Parameter Server、CXXNet、Minerva融合併創造了新的深度學習框架MXNet。敏捷學長也指出了在深度學習新時代,隨著可微分編程、圖神經網絡等新領域的出現以及專用晶片的發展,深度學習框架會迎來更多機遇與挑戰。深度學習的浪潮其實到現在僅僅發展了十幾年的時間。
  • 「深度學習」基於RNN實現特定庫的分子生成的遷移學習指南
    在本工作中,作者利用基於SMILES的GRU-RNN模型對18個小數據的藥化分子庫進行分子生成。通過對不同的遷移學習的配置實驗,作者提出了在基於RNN的分子生成任務中使用遷移學習的經驗性原則和建議。——背景——得益於大型資料庫(如ZINC,ChEMBL等)的出現和機器學習技術的蓬勃發展,深度學習技術已經被廣泛的應用到了藥物設計中,而分子生成正是其中主要的一類任務。
  • 幾何深度學習可用於破譯蛋白分子相互作用
    幾何深度學習可用於破譯蛋白分子相互作用 作者:小柯機器人 發布時間:2019/12/10 15:33:57 瑞士洛桑生物信息學研究所B. E.
  • 輕量級部署,騰訊優圖開源深度學習推理框架TNN
    機器之心發布機器之心編輯部6 月 10 日,騰訊優圖實驗室宣布正式開源新一代移動端深度學習推理框架 TNN。從學界到工業界,「開源」已經成為 AI 領域的關鍵詞。6 月 10 日,騰訊優圖實驗室宣布正式開源新一代移動端深度學習推理框架 TNN,通過底層技術優化實現在多個不同平臺的輕量級部署落地。該框架性能優異、簡單易用。基於 TNN,開發者能夠將深度學習算法輕鬆移植到手機端並高效執行,開發人工智慧 APP,真正將 AI 帶到指尖。
  • 舉個例子,如何用GCN圖卷積神經網絡實現摔倒監測?
    引言近幾年來深度學習的發展越來越火熱,其中最為典型的就是半監督學習的新研究進展GCN。由Kipf和Welling提出的GCN被證明是一種有效的圖半監督學習框架應用,如社會、醫療、商業和交通網絡分析,其中典型的對象是在少數有標記數據的幫助下對無標記數據進行分類圖中的樣本。圖卷積網絡(GCN)已被證明是一種有效的基於圖的半卷積網絡框架監督學習應用。GCN的核心操作塊是卷積層通過融合節點屬性和關係,使網絡能夠構造節點嵌入節點之間。不同的特性或特性的相互作用本身就具有不同的影響卷積的層。
  • 基於深度學習的商品檢索技術
    目前就職於百度深度學習研究院。主要從事商品檢索技術的研發。所在的識圖策略組包括商品搜索、相似搜索、相同搜索與圖像猜詞等方向。摘要商品檢索是一門綜合了物體檢測、圖像分類以及特徵學習的技術。近期,很多研究者成功地將深度學習方法應用到這個領域。
  • 瀏覽器中實現深度學習?有人分析了7個基於JS語言的DL框架
    具體而言,作者重點分析了 7 個最近出現的基於JavaScript 的 DL 框架,並對比了具體框架支持哪些 DL 任務。深度學習(Deep Learning,DL)是一類利用多層非線性處理單元(稱為神經元)進行特徵提取和轉換的機器學習算法。每個連續層使用前一層的輸出作為輸入。近十年來,深度學習技術的進步極大地促進了人工智慧的發展。
  • 「深度學習」運用多通道亞結構圖進行分子性質預測
    隨著人工智慧技術的發展,深度學習方法在藥物分子設計中的應用愈發廣泛。分子性質的預測在藥物發現過程中起著很大作用。為了對分子性質進行預測,首先需要對分子進行表徵。應用深度學習對分子進行表徵有多種途徑,例如SMILES將分子編碼成一個字符串序列,根據成環結構斷開的位置不同,同一分子可能得到不同的SMILES。
  • 深度學習框架比較,我該選擇哪一個?
    目前,全世界最為流行的深度學習框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch等。下面我們就來介紹一下目前主流的、以及一些剛開源但表現非常優秀的深度學習框架的各自特點,希望能夠幫助大家在學習工作時作出合適的選擇。
  • 【Code】OGB:圖機器學習的基準測試數據集
    1.OGB1.1 OverviewOpen Graph Benchmark(以下簡稱 OGB)是史丹福大學的同學開源的 Python 庫,其包含了圖機器學習(以下簡稱圖 ML)的基準數據集、數據加載器和評估器,目的在於促進可擴展的、健壯的、可復現的圖 ML 的研究。