WeGene:存储、传输、计算巧实现,基因数据上云不再难

  1. 云栖社区>
  2. 博客>
  3. 正文

WeGene:存储、传输、计算巧实现,基因数据上云不再难

wegene 2017-02-23 12:03:10 浏览3162
展开阅读全文

本文正在参加“最佳上云实践”评选,来给我们投票吧:https://yq.aliyun.com/activity/158(编号15)

WeGene(微基因)是一家主打个人基因测序服务的公司,主要致力于帮助用户解读基因的奥秘,遇见未知的自己。

我们现在主要的服务内容包括基于基因组数据的祖源分析、个性化的运动和减肥建议、营养基因组学、基因组医学等方面的内容。未来,我们会跟合作伙伴一起把基因组数据推向每一个被基因所影响的角落。

解读基因的秘密,让自己更加了解自己,这是我们的初衷,也是我们的梦想!

我们在做什么

先来简单介绍一下个人基因组的知识。除了细胞核有基因组之外,线粒体上也会存在基因组,线粒体是为细胞提供能量的,每个人的线粒体都来自母系,Y染色体会全部来自父系。这些基因数据全部测试的数据量大约为100G。但是我们通常会认为人与人之间的基因组差异会很小,如果只把人与人之间具有差异的部分挑选出来进行检测,我们的计算成本就会变得小很多。

7ff02e9a4c1e4250d8c20f3df741753cf8285350

通过基因组数据,我们可以做很多有趣的事情。比如,在东非把所有人的基因组进行计算,加上化石和遗迹的考察,我们可以知道我们的祖先最早出现的地点和时间,以及如何一步一步走到这片土地上的。下图展示了人类的迁移路线。

c7341e3f620281bdaa87d579ffb1486e29b20471

除了上述祖源的检测,我们还可以根据每个用户的基因组并且基于现在的文献和成果做更多的解读。通过很多的检测,我们发现很多与基因组有关的疾病并不单单是基因组可以决定的,基因组能决定的事情很少,但是几乎所有的所谓疾病的风险除了遗传病以外,基因都只是其中的一个影响因素。

基因组数据不仅仅能够为个人提供好处,很多基因组研究在中国人身上做的不够好,最主要的原因是数据不够。所以,我们希望通过互联网的技术和手段来推动这方面的研究,比如尼古丁的研究、基因组和睡眠关系的研究。

WeGene云端架构

下面是我们用到的阿里云服务,其中包括云服务器ECS、云存储OSS、云数据库RDS、API应用网关、批量计算等等。阿里云的“三大件”(ECS、OSS、OSS、RDS)结合负载均衡、弹性伸缩以及其他的NoSQL数据库等功能,让我们能够为用户提供健壮的网站服务——无论是在访问量低峰期,还是在批量交付检测报告给用户或市场活动推广时流量较高的情况下。

304f5a20d10f30bc81a06dbc8b52d493eba85104

除了最基本的网站服务以外,由于基因分析需要海量的计算资源,WeGene还与阿里云平台上提供生物信息PAAS服务的北京聚道有限公司(GeneDock)进行了合作,在他们提供的计算平台上运行用户基因数据的分析。

a8d67c36d9c5a40fc3cf836d6ace3f42c08acfcd

具体来讲,用户的生物样本在实验室进行实验以后,所产生的实验数据会直接被上传进入OSS中,并根据不同的计算任务需求被分配到WeGene在ECS上自建的计算服务器、GeneDock、批量计算等在内的计算环境中去进行分析。分析的结果会通过统一管理的API网关服务录入数据库,并最终在阿里云上呈现给全球的用户。在这一过程中,阿里云实际帮助我们简化了数据存储、传输、计算方面的问题,具体情况如下:

1. 数据存储

  • RDS:主要用于存储预处理后的基因组数据、表型数据、网站数据,以存储计算完成的结果数据为主
  • OSS:用于存储基因组原始数据和大型的计算结果(比如全基因组测序数据,每位用户会产生约200GB了;芯片测序数据,每位用户会产生约 200 MB 数据)
  •  GeneDock:存储正在处理中的全基因组数据和芯片数据
  • 阿里云MongoDB:用于存储一些数据格式多变的第三方表型数据等
  • 本地存储及OAS:数据冷备

2. 数据传输

  • 生命科学所有的数据都是在测序中心、实验室中产生的,怎么把这些数据传输到云上是一个比较麻烦的事情。在上云的过程中,我们主要会使用三种方式:
  • 芯片数据:数据量比较小,实验室用OSS客户端上传OSS
  • 全基因组数据:数据量比较大,需通过GeneDock的专线上传GeneDock的系统(位于OSS上)。也有一些专门的压缩和传输算法,尽可能利用数据的带宽,同时实时压缩和解压
  • 海外用户基因组数据: 通过其他厂商提供的API直接获取并存储到RDS中

3. 计算

  • ECS:在ECS上,我们利用一些计算资源调度自建了一些计算节点,用于处理常规的、计算资源相对较小但数量较多的分析任务,并会提供一些小规模实时计算服务,通过API网关进行管理和调用
  • GeneDock:用于并行处理计算资源要求较高的batch任务以及全基因组数据分析
  • 批量计算:类似GeneDock的使用

未来的挑战

尽管云计算为基因分析工作提供了诸多便利,但是未来还将面临下面这几项大的挑战。

1. 基因组数据的二次分析

当我们为每一个人提供基因组数据分析的时候,我们只是根据已有的科研结果去一个一个的分析基因组数据。当积累了足够多的数据之后,希望能够从数据中发现新的东西。这一过程同样需要海量的计算资源作为支撑——最终我们希望每获取一份新的基因组数据时,我们都能够更新现有的知识库——这对流式计算、机器学习的要求非常之高。

2. 全基因组数据存储、分析和可视化

为了能够更好的查询、分析和可视化基因组数据数据,我们需要一个高效的数据存储和查询系统。“Genomics API”设想对全基因组数据实时查询提供统一的接口服务,但大规模的基因组数据暂时还不能存储在关系型(甚至是非关系型)数据库中 ——在这样的情况下,如何能够快速查询某个基因组上的一小个片段便是一个重大挑战。

3. 全基因组测序的计算问题

在基因组测序的过程中,每一份基因组首先都会被断裂成数十万个片段并检测,再被拼接起来成为完整的基因组数据。由于这一过程是NP问题,我们无法直接通过算法进行拼接,而需要根据参考基因组数据进行比对拼接。因此,我们希望在整个过程中,引入更好的算法(如基于FPGA的算法)、或使用更多的参考数据进行比对(会带来更高的计算资源要求),这都对在云上进行大规模数据的生产提出了问题。

希望随着云计算与大数据技术的发展,这些问题都不将再是问题。

 

网友评论

登录后评论
0/500
评论
wegene
+ 关注