基于文章:探索「老药新用」最短路径:亚马逊AI Lab开源大规模药物重定位知识图谱DRKG,记录了该项目的实际部署与探索过程,供参考。

1. DRKG介绍

大规模药物重定位知识图谱 Drug Repurposing Knowledge Graph (DRKG) 是一种涉及基因、化合物、疾病、生物学过程、副作用和症状的综合性生物知识图。DRKG包括来自六个现有数据库的信息,包括DrugBank、Hetionet、GNBR、String、IntAct 、DGIdb,以及从最近的出版物收集的数据,特别是与Covid19相关的数据。它包括属于13种实体类型的97238个实体,以及分属于107种关系类型的5874261 个三元组数据。还包括一堆关于如何使用DRKG完成探索和分析统计,基于机器学习方法完成知识图嵌入等任务。

2. 开发环境

  • python==3.6.1
  • torch==1.2.0+cpu
  • dgl==0.4.3
  • dglke==0.1.1

3. 数据源

DRKG包括Hetionet等 6个生物数据库信息以及最近出版的论文数据集,然而,具体数据获取方式并未公开,以下是部分生物数据库介绍。

3.1 Hetionet

地址: https://het.io/about/

3.2 DrugBank

https://www.drugbank.ca/

3.3 String

4. 知识图谱信息

DRKG.tsv:包含了知识图谱的所有三元组,包含13类实体,如下:

17类实体关系

5. 预备知识

基于TransE算法完成实体、关系、边嵌入向量构造。

关于知识图谱嵌入模型可点击以下链接了解:知识图谱嵌入的Translate模型汇总(TransE,TransH,TransR,TransD)

6. DRKG使用

6.1 知识图谱嵌入向量预训练

在亚马逊DRKG中,提供了封装好的脚本实现知识图谱嵌入向量的训练模型:

在原始代码中,执行脚本为:

由于我们采用windows环境 ,且没有配置GPU集群,需要修改执行脚本为:

!dglke_train --dataset DRKG --data_files DRKG_train.tsv DRKG_valid.tsv DRKG_test.tsv --format raw_udd_hrt --model_name TransE_l2 --batch_size 2048 \
--neg_sample_size 256 --hidden_dim 400 --gamma 12.0 --lr 0.1 --max_step 100000 --log_interval 1000 --batch_size_eval 16 -adv --regularization_coef 1.00E-07 --test --num_thread 1 --neg_sample_size_eval 10000 --async_update

其中dglke_train 的可选参数有以下:

  • --model_name {TransE,TransE_l1,TransE_l2,TransR,RESCAL,DistMult,ComplEx,RotatE}. The models provided by DGL-KE.
  • --data_path DATA_PATH. The path of the directory where DGL-KE loads knowledge graph data.
  • --dataset DATASET The name of the builtin knowledge graph. Currently,the builtin knowledge graphs include FB15k, FB15k-237,wn18, wn18rr and Freebase. DGL-KE automatically downloads the knowledge graph and keep it under data_path.
  • --format FORMAT The format of the dataset. For builtin knowledge graphs,the foramt should be built_in. For users own knowledge graphs,it needs to be raw_udd_{htr} or udd_{htr}.
  • --data_files DATA_FILES [DATA_FILES ...]. A list of data file names. This is used if users want to train KGEon their own datasets. If the format is raw_udd_{htr},users need to provide train_file [valid_file] [test_file].If the format is udd_{htr}, users need to provideentity_file relation_file train_file [valid_file] [test_file].In both cases, valid_file and test_file are optional.
  • --delimiter DELIMITER. Delimiter used in data files. Note all files should use the same delimiter.
  • --save_path SAVE_PATH the path of the directory where models and logs are saved.
  • --no_save_emb Disable saving the embeddings under save_path.
  • --max_step MAX_STEP The maximal number of steps to train the model.A step trains the model with a batch of data.
  • --batch_size BATCH_SIZE. The batch size for training.
  • --batch_size_eval BATCH_SIZE_EVAL.The batch size used for validation and test.
  • --neg_sample_size NEG_SAMPLE_SIZE. The number of negative samples we use for each positive sample in the training.
  • --neg_deg_sample Construct negative samples proportional to vertex degree in the training.When this option is turned on, the number of negative samples per positive edgewill be doubled. Half of the negative samples are generated uniformly whilethe other half are generated proportional to vertex degree.
  • --neg_deg_sample_eval. Construct negative samples proportional to vertex degree in the evaluation.
  • --neg_sample_size_eval NEG_SAMPLE_SIZE_EVAL. The number of negative samples we use to evaluate a positive sample.
  • --eval_percent EVAL_PERCENT. Randomly sample some percentage of edges for evaluation.
  • --no_eval_filter Disable filter positive edges from randomly constructed negative edges for evaluation
  • --log LOG_INTERVAL, --log_interval LOG_INTERVAL. Print runtime of different components every x steps.
  • --eval_interval EVAL_INTERVAL. Print evaluation results on the validation dataset every x stepsif validation is turned on
  • --test Evaluate the model on the test set after the model is trained.
  • --num_proc NUM_PROC The number of processes to train the model in parallel.In multi-GPU training, the number of processes by default is set to match the number of GPUs.If set explicitly, the number of processes needs to be divisible by the number of GPUs.
  • --num_thread NUM_THREAD The number of CPU threads to train the model in each process.This argument is used for multiprocessing training.
  • --force_sync_interval FORCE_SYNC_INTERVAL. We force a synchronization between processes every x steps formultiprocessing training. This potentially stablizes the training processto get a better performance. For multiprocessing training, it is set to 1000 by default.
  • --hidden_dim HIDDEN_DIM.The embedding size of relation and entity
  • --lr LR The learning rate. DGL-KE uses Adagrad to optimize the model parameters.
  • -g GAMMA, --gamma GAMMA. The margin value in the score function. It is used by TransX and RotatE.
  • -de, --double_ent Double entitiy dim for complex number It is used by RotatE.
  • -dr, --double_rel Double relation dim for complex number.
  • -adv, --neg_adversarial_sampling Indicate whether to use negative adversarial sampling.It will weight negative samples with higher scores more.
  • -a ADVERSARIAL_TEMPERATURE, --adversarial_temperature ADVERSARIAL_TEMPERATURE
  • The temperature used for negative adversarial sampling.
  • -rc REGULARIZATION_COEF, --regularization_coef REGULARIZATION_COEF
  • The coefficient for regularization.
  • -rn REGULARIZATION_NORM, --regularization_norm REGULARIZATION_NORM norm used in regularization.
  • --gpu GPU [GPU ...] A list of gpu ids, e.g. 0 1 2 4
  • --mix_cpu_gpu Training a knowledge graph embedding model with both CPUs and GPUs.The embeddings are stored in CPU memory and the training is performed in GPUs.This is usually used for training a large knowledge graph embeddings.
  • --valid Evaluate the model on the validation set in the training.
  • --rel_part Enable relation partitioning for multi-GPU training.
  • --async_update Allow asynchronous update on node embedding for multi-GPU training.This overlaps CPU and GPU computation to speed up.

此外,还需要修改以下路径代码,具体需要修改数据类型从int32为int64。

6.2 知识图谱嵌入向量的应用

  • 实体相似性分析
  • 关系相似性分析
  • 实体-关系得分评估

其中实体-关系得分评估可用于链接预测。链接预测是指包括社交网站的好友推荐,预测蛋白质间的相互影响,预测犯罪嫌疑人的关系,商品推荐在内的一系列问题总称。

6.3 链接预测问题

DRKG提供了一个链接预测demo,但需对代码进行小幅修改。

在执行以下代码会报错:IndexError: tensors used as indices must be long, byte or bool tensors

需要转化张量格式,增加:

6.4 老药新用、药物重定向

DRKG提供了covid-19新冠药物筛查demo,主要包括基于两个方向的药物筛选:

1、基于“疾病-化合物”关系的药物筛查

2、基“基因-化合物”关系的药物筛查

6.4.1 基于“疾病-化合物”关系的药物筛查

首先,收集DRKG中所有冠状病毒(COV)疾病,映射到对应的图谱实体(疾病)嵌入向量;

其次,在Drugbank中使用FDA批准的药物作为候选药物,约有8104个,同样映射到对应的图谱实体(药物)嵌入向量;

最后,定义关系为['Hetionet::CtD::Compound:Disease','GNBR::T::Compound:Disease'] 这两类关系,同样映射到对应的图谱关系嵌入向量;

借助于训练图谱嵌入向量的TransE算法,定义以下得分函数,作为衡量所有候选药物在上述两类关系上与所有冠状病毒(COV)疾病的匹配程度,得分越大越好。

统计得分TOP100的药物,并与以开展的32个covid-19临床试验药物比较,观察有多少在TOP100中存在。

6.4.2 基于”基因-化合物“的药物筛查

首先,收集DRKG中所有冠状病毒(COV)相关基因,映射到对应的图谱实体(基因)嵌入向量;

其次,在Drugbank中使用FDA批准的药物作为候选药物,约有8104个,同样映射到对应的图谱实体(药物)嵌入向量;

最后,定义关系为['GNBR::N::Compound:Gene'] 抑制关系,同样映射到对应的图谱关系嵌入向量;

借助于训练图谱嵌入向量的TransE算法,定义以下得分函数,作为e衡量所有候选药物在上述抑制关系上与所有冠状病毒(COV)基因的匹配程度,得分越大越好。

6.4.3 总结

纵观本项目的药物筛查实现方式,采用的方法其实并不复杂,核心还是对预训练知识图谱嵌入模型的使用。至于看到过的基于GNN进行药物分子设计的应用,在本项目所提供的代码中并未体现,因此相关工作仍然需要继续研究。

亚马逊DRKG使用体验的更多相关文章

  1. (转)来自互联网巨头的46个用户体验面试问题(谷歌,亚马逊,facebook及微软)

    原文出处: uxdesign - Eleonora Zucconi   译文出处:UXRen - 邓俊杰 如果你是个正在找工作的用户体验研究员,或是一个招聘经理正急需一些启发性问题来测试你的候选人,这 ...

  2. 批量删除亚马逊kindle云端文档

    首先鄙视亚马逊的不负责任,kindle的云端管理系统犹如一坨狗屎,根本没有考虑的任何用户体验,只能一个一个删除不说,删除后又回到第一页...翻页也没有输入页码的地方,如果在第100页删除文档后,又回到 ...

  3. 亚马逊副总裁谈Marketplace平台的个性化服务

    说到个性化,亚马逊无疑是挖掘与利用数据为消费者打造个性化网购体验的先驱之一.而现在,几乎所有的公司和网站都在利用更加个性化的推荐算法为用户提供更好的购物和浏览体验. 亚马逊近年来尤其重视将其个性化特性 ...

  4. A亚马逊WS网上系列讲座——怎么样AWS云平台上千万用户的应用建设

    用户选择云计算平台构建应用程序的一个重要原因是高弹性的云平台和可扩展性. 面向Internet应用程序通常需要支持用户使用大量,但要建立一个高度可扩展.具有一定的挑战,高度可用的应用程序,只有立足AW ...

  5. Google、微软、Linkedln、Uber、亚马逊等15+海外技术专家聚首2018TOP100Summit

    11月30日-12月3日,由msup主办的第七届全球软件案例研究峰会(以下简称为TOP100Summit)将在北京国家会议中心举办.本届峰会以“释放AI生产力,让组织向智能化演进”作为开幕式主题, 4 ...

  6. TOP100summit 2017:亚马逊Echo音箱能够语音识人,华人工程师揭秘设计原理

      本文编辑:Cynthia 2017年,人工智能的消费产品落地聚焦在了智能音箱上,谷歌.亚马逊纷纷推出智能音箱产品,国内的阿里巴巴推出天猫精灵,小米推出小米AI音箱.智能音箱通过语音可以发出指令,未 ...

  7. 微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)

    开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜.2016年9月GitHub报告显示,GitHub已经有超过 520 万的用户和超 30 万的 ...

  8. 亚马逊Kindle正式进入中国

    6月7日下午消息,亚马逊Kindle今天下午4点正式发售.其中,Kindle电子阅读器和Kindle Fire平板电脑同步销售.Paperwhite售价最低849元,Kindle Fire HD售价最 ...

  9. 亚马逊CEO贝索斯致股东信:阐述公司未来计划

    亚马逊CEO 杰夫·贝索斯(Jeff Bezos)今天发布年度股东信, 详细描述了亚马逊的产品.服务和未来计划,当然,信中并没有任何的硬数据,比如说亚马逊Kindle的销量等等.但这封信也包括一些颇令 ...

随机推荐

  1. three.js 着色器材质之变量(三)

    这篇郭先生在练习一下着色器变量,在度娘上面或者官网上经常看到类似水波一样的效果,这篇就试着做一个这样的效果,顺便巩固一下顶点着色器和片元着色器,毕竟多多练习才能更好地掌握.效果如下图,在线案例请点击博 ...

  2. JavaScript String.prototype 原型

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...

  3. C#LeetCode刷题之#54-螺旋矩阵(Spiral Matrix)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3672 访问. 给定一个包含 m x n 个元素的矩阵(m 行, ...

  4. Spring/Springboot——JavaConfig

    1.认识JavaConfig JavaConfig是Spring的一个子项目,在Spring4之后成为一个核心功能 JavaConfig中使用的注解: @Configuration 在类上打上这一标签 ...

  5. 深度优先搜索(dfs)与出题感想

    在3月23号的广度优先搜索(bfs)博客里,我有提到写一篇深搜博客,今天来把这个坑填上. 第一部分:深度优先搜索(dfs) 以上来自百度百科. 简单来说,深度优先搜索算法就是——穷举法,即枚举所有情况 ...

  6. 《Java从入门到失业》第二章:Java环境(三):Java命令行工具

    2.3Java命令行工具 2.3.1编译运行 到了这里,是不是开始膨胀了,想写一段代码来秀一下?好吧,满足你!国际惯例,我们写一段HelloWorld.我们在某个目录下记事本,编写一段代码如下: 保存 ...

  7. mysql-STRAIGHT_JOIN-优化

    性能提升神器-STRAIGHT_JOIN,在数据量大的联表查询中灵活运用的话,能大大缩短查询时间. 首先来解释下STRAIGHT_JOIN到底是用做什么的: STRAIGHT_JOIN is simi ...

  8. linux驱动之定时器的使用

    被文章摘自一下几位网友.非常感谢他们. http://blog.sina.com.cn/s/blog_57330c3401011cq3.html Linux的内核中定义了一个定时器的结构: #incl ...

  9. 手写Promise简易版

    话不多说,直接上代码 通过ES5的模块化封装,向外暴露一个属性 (function(window){ const PENDING = 'pending'; const RESOLVED = 'fulf ...

  10. 【独家】React Native 版本升级指南

    前言 React Native 作为一款跨端框架,有一个最让人头疼的问题,那就是版本更新.尤其是遇到大版本更新,JavaScript.iOS 和 Android 三端的配置构建文件都有非常大的变动,有 ...