亚马逊AWS官方博客

基于Neptune搭建人类疾病表型通路知识图谱

简介

随着COVID-19大流行继续威胁并夺走全世界的生命,我们必须在各个组织和科学领域共同努力以抗击这种疾病。无数的医护人员,医学研究人员,科学家和公共卫生官员已经在前线,照顾患者,寻找疗法,教育公众并帮助制定政策。在AWS,我们相信可以提供帮助的一种方法是为这些专家提供所需的数据和工具,来帮助科研人员找到不同疾病之间的关系、不同药物的综合作用以及基因到蛋白质再到表型之间的通路。

此博文主要介绍基于AWS Neptune图数据导入表型、遗传等不同生命科学维度的数据。通过Neptune Gremlin来清洗、处理相关数据,生成相关知识图谱。以及如何利用Neptune查询语句来快速发现定位相关数据通路,如不同表型之间的关联,基因位点对应的表型数据等。

例如:阿尔茨海默病相关基因,以及表型所属的分类之间的关系。

准备事项

此文章默认您有如下条件:

  • AWS账号
  • 创建EC2的权限
  • 访问S3的权限

 

下载实验材料及Graph Workbench镜像

下载实验材料

mkdir ~/Genomics-in-Neptune

git clone https://github.com/hy714335634/Genomics-in-Neptune---workshop.git ~/Genomics-in-Neptune

联系blog作者获取下载workbench镜像。

https://zq-work.s3.cn-north-1.amazonaws.com.cn/workshop/container/graph_notebook.tar

加载镜像

docker load -i graph_notebook.tar

创建Graph Neptune Workbench实例

修改相关的字段内容并执行

docker run \
--env GRAPH_NOTEBOOK_AUTH_MODE="DEFAULT" \
--env GRAPH_NOTEBOOK_HOST="workshop.ckt7qjdvjxxh.neptune.cn-northwest-1.amazonaws.com.cn" \
--env GRAPH_NOTEBOOK_PORT="8182" \
--env NEPTUNE_LOAD_FROM_S3_ROLE_ARN="" \
--env AWS_REGION="cn-northwest-1" \
--env NOTEBOOK_PORT="8888" \
--env LAB_PORT="8889" \
--env GRAPH_NOTEBOOK_SSL="True" \
--env NOTEBOOK_PASSWORD="neptune" \
-v ~/Genomics-in-Neptune/:/root/SageMaker/Genomics-in-Neptune/ \
-p 8888:8888 \
-p 8889:8889 \
-d graph_notebook:latest

在web浏览器中访问(也可以使用Neptune Notebook进行后续操作)

http://ec2ip:8888

 

导入数据

HPO与CHPO数据库介绍

Human Phenotype Ontology, HPO – 人类表型术语集

旨在提供人类疾病中用于描述表型异常的标准词汇. HPO每个术语描述了一种表型异常,如房间隔缺损(atrial septal defect), HPO目前正在利用从医学文献, Orphanet, DECIPHER和OMIM数据库获得的信息进行开发, 目前包含约11,000项名词和超过115000项关于遗传性疾病的注释. HPO数据库还提供了一套针对约4000种疾病的注释(annotations).

Chinese Human Phenotype Ontology, CHPO – 中文人类表型术语集

中文版的HPO有助于中国临床医生以标准化的医学名词和术语来描述罕见病患者的表型, 这样不仅有助于诊断疾病, 确定致病基因, 还能帮助研究人员寻找疾病与特定表型之间的关系。

CHPO中存储了表型定义、中英文名称、分类定义等关键信息,我们将表型作为主体,构建表型分类网络

具体数据导入请查考notebook文件也可以:https://github.com/hy714335634/Genomics-in-Neptune—workshop/blob/main/Analyses%20of%20Complex%20Diseases%20and%20Human%20Disease%20Network/02-Import%20data%20into%20the%20Neptune.ipynb

 

数据关联查询分析

在特定表型分类下,查询不同表型之间的关联

由于实体间的关系是 Phenotypic->PhenotypicCategory->Term , 所以对Term来说要查询表型, 需要递归 in 关系的节点, 通过 repeat 操作可重复查询 in 节点,再通过 until 限定终止条件为:

表型的中文名为 [‘脑肉芽肿’,’肺炎’,’酒后面部潮红’,’牙龈出血’] 四者之一

从表型来看四者分别描述的人体不同部位,但从查询结果来看四者之间有一定关联,且相关性有差异,如 “牙龈出血” 和 “脑肉芽肿” 都属于 “血液和造血组织异常” 分类,相关性更近。

gremlin -p v,v,v
g.V("表型异常").hasLabel('Term')
.repeat(
in()
)
.until(
has('name_cn',within('脑肉芽肿','肺炎','酒后面部潮红','牙龈出血'))
)
.simplepath()
.by(id)
.by(id)
.by('name_cn')

CHPO结合OMIM可视化分析

统计查找阿尔茨海默病相关基因,以及表型所属的分类

gremlin -p v,outv,outv,outv
g.V().has('OMIM','disease_name_cn',containing('阿尔茨海默病'))
.out().hasLabel('Gene')
.groupCount('Gene').by(id)
.repeat(out())
.until(
hasLabel('PhenotypicCategory')
)
.groupCount('PhenotypicCategory').by(id)
.cap('Gene','PhenotypicCategory')
.unfold()

gremlin -p v,outv
g.V().has('OMIM','disease_name_cn',containing('阿尔茨海默病'))
.out('disease_to_gene').hasLabel('Gene')
.simplepath()
.by('disease_name_cn')
.by(id)

我们看到与阿尔茨海默病相关的Gene主要是[APP,SORL1,PSEN1,PSEN2],我们也可以尝试查询这几个基因分别与哪些疾病表型相关,包括这些表型的分类。

 

总结

将我们在各个组织和科学学科之间的努力相结合,可以帮助我们快速找到不同病理的根本原因,提交疑难杂症的诊断效率。借助AWS Neptune,任何人都可以试验和分析与疾病相关的精选数据,以及共享自己的数据和结果。我们相信,通过结合数据,技术和科学的开放合作精神,我们可以激发见识,并促进遏制,减少并最终治愈疑难杂症所必需的突破。

注:本文章的数据仅供科学研究及非商业活动应用。

 

本篇作者

张强

亚马逊云科技解决方案架构师,在加入亚马逊云科技之前,拥有多年生物信息开发经验,熟悉传统工作流与HPC环境迁移至云原生技术的技术实现,目前服务于生命科学和医疗健康相关行业客户,如医学影像、基因组学、药物研发等,致力于提供有关HPC、无服务器、数据安全等各类云计算解决方案的咨询与架构设计。

方康

方康,卡内基梅隆大学计算机硕士,现任大中华地区亚马逊医疗&生命科学行业解决方案架构师。在加入亚马逊之前就职于华大基因,任职首席云架构师,负责开发和维护基因组学领域云计算平台, 为全球合作伙伴提供基因组学数据管理,转化和分析方案。同时致力于基因组学数据管理与分析, HPC(高性能计算集群)与异构计算,工作流语言,数据转化与压缩和生命科学数据的合规与安全等领域的应用。