Xilinx FPGA在基因组测序中大显身手!

sleibso FPGA开发圈
作者:sleibso ,编译:蒙面侠客

引言

PrecisionFDA平台是基因组信息学社区和共享数据平台,这是一个为研究人员准备的开源、基于云的工具,它将为下一代测序诊断提供依据,并且为所有开发者提供统一的、可共享的在线基因组信息数据库,使研究人员和测试开发人员可以探索NGS方法,推动创新以制定必要的标准,推动科学的监管、评估基因测序和软件的准确性。要做到测序的准确性,需要什么算法和相应的硬件平台的支撑呢?

最近,有一个挑战叫做“隐藏的宝藏(Hidden Treasures)”,这一挑战测试了基因组分析管道的能力和准确性,以便从参考细胞系的外显基因序列测序中发现在FASTQ中所注入的硅氧体,FASTQ文件是基于文本的,用于存储使用ASCII编码的生物序列。PrecisionFDA于2017年10月4日在波士顿举行的基因组学节上宣布了这一挑战的结果。有86个来自30个参与者的有效条目,在86个条目中,有45个发现了50个注入的变异。在所有50种被注射的变异中Edico Genome’s DRAGEN V2 的Germline Pipeline在6个准确度指标中的5个中获得了最高的分数,分别是SNP recall,SNP F-score,indel precision,indel recall和indel F-socre。Edico在6个指标上排名第二的条目是SNP precision。

为什么Edico Genome能够取得这么好的成绩呢?我们来简单的回顾一下这中间的历史。起初Edico Genome公司想要将其加速算法移植到ASIC上,设计一个ASIC需要较长的时间,算法也在不断的更新使设计ASIC的方案变得捉襟见肘,公司发现将算法直接移植到Xilinx的FPGA上是一个不错的选择,从性能和时间成本上都能解决这个问题。图.1是第一代的基于Xilinx FPGA的Dragen板卡,基于FPGA的Dragen板卡将外显子运行时间减小到了6分钟,而纯软件的外显子运行时间是6个小时,所以基于FPGA的硬件加速方案得到了50-60倍速度的提升。经过几年的发展,很多的算法都偏向于在云端运行,所以Edico Genome将基因分析和存储的算法移植到了Amazon的AWS EC2 F1 Instance平台上,这个平台还是多亏了有Xilinx UltraScale+ VU9P FPGAs,详情可见“AWS makes Amazon EC2 F1 instance hardware acceleration based on Xilinx Virtex UltraScale+ FPGAs generally available.”有了Amazon的平台,基因算法和基于云端的基因存储得到了2-4倍的压缩,提升更多的效率。


图.1 Edico Genome Dragen应用于Exome和Genome分析的加速卡

Virtex UltraScale+有着很好的性能,采用了先进的FinFET工艺,有着最高串行I/O58G的速度,在DSP计算性能21.2 TeraMACs中有着最高的处理数据的带宽,在深度学习、数据中心互联方案等方面都能发挥很好的作用。

总结

下一代基因组测序(Next Generation Sequencing ,NGS)是一个很有意义的工作,全球很多国家都在积极的参与这件事情。这需要多个学科的结合,不仅仅是生命科学,计算机科学的软件和硬件都可以在这个人类的大工程中发挥强大的力量。硬件加速比软件加速在特定的算法中有着得天独厚的优势,本文中所提到的基因组的测序的例子就能体现。FPGA是在ASIC出现之前针对特定的算法的硬件加速有着独特的优势!

声明:本文来源于Xilinx Xcell Daily Blog,由创新网赛灵思中文社区编译,转载请注明作者、出处及原文链接

©著作权归作者所有:来自51CTO博客作者mb5fd86d05a0afe的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Java的十大算法,你知道几个?
  2. 全基因组分析揭示长非编码RNA的差异表观特征模式
  3. 隐马尔科夫模型-前向算法
  4. 登顶GitHub大热项目 | 非监督GAN算法U-GAT-IT大幅改进图像转换
  5. 【培训】DNA甲基化与表观基因组学数据挖掘与分析技术
  6. 单细胞表观基因组学:记录过去和预测未来
  7. 外显子组测序数据分析
  8. 算法训练营
  9. CW节约算法构造VRPTW初始解(附MATLAB代码)

随机推荐

  1. golang 如何判断文件是否存在
  2. golang 管道线程安全吗
  3. golang的zap怎么使用
  4. golang 如何模块化
  5. golang调试工具有哪些?
  6. golang的slice如何去重
  7. golang判断map中指定key是否存在
  8. golang指针传递和值传递的区别是什么?
  9. golang的hashmap怎么扩容
  10. golang 如何类型转换