专栏首页图形化开放式生信分析系统开发图形化开放式生信分析系统开发 - 1 需求分析及技术实现V2(2020.7更新)
原创

图形化开放式生信分析系统开发 - 1 需求分析及技术实现V2(2020.7更新)

起因/背景

从2017年前开始,工作的原因接触到了NGS(高通量测序技术 High-throughput sequencing又称“下一代”测序技术"Next-generation" sequencing technology)技术和相关的生物信息学分析。

应用方向是肿瘤的临床诊断,几年间随着技术的快速迭代,应用范围和模式都发生了巨大变化:从最早的肿瘤组织石蜡切片样本过渡到血液样本ctDNA(circulating tumor DNA)的检测,从单一癌种十几个基因的小Panel分析过渡到范癌种几百个基因的大Panel分析,应用范围从单纯的从肿瘤组织切片分析指导靶向用药,到肿瘤的早期筛查>手术后监测全过程;作为“干试验”部分的生信分析的模式也相应的经历了巨大的变化,从单台工作站十几分钟分析一个样本(单一癌种石蜡切片样本)到大规模样本的队列分析,从单一工作站/服务器到大Panel范癌种分析的服务器集群。生信分析所需要的计算能力也快速上升,形式也多种多样,为了解决衍生出来的各种需求,如何管理各种分析流程和计算资源,提供强大的灵活性与扩展能力,也是SliverWorkspace生信分析系统/平台开发的起因。

以下的需求不是一开始就设想好的,是开发过程中逐步增加到现在的样子的,在与用户接触中归纳总结,一步一步添加上去的,现在这篇文章作为一个总结,便于日后复盘,正如本文是第二个更新版本一样。

需求归纳

归纳出的需求,对于生信分析应该具有广泛通用性,不仅仅适用于肿瘤一个方向。

1. 作为计算资源的控制端:支持单台工作站到服务器集群的扩展能力,并可以对其任意组合使用

  • 早期公司针对单癌种开发的各种分析流程(pipeline),运行在单台服务器上,并对外投放部署。这是首先要满足的需求,这类产品进行医疗器械(IVD)注册也有同样的要求。
  • 后期随着范癌种样本量增大,很多公司都部署了服务器集群(SGE/Torque/PBS/Slurm),这要和前面的单台服务器统一纳入控制端管理。

2. 从架构设计上解决:分析流程 > 运行环境 > 计算资源(服务器)三者耦合关系,显著降低部署、迁移成本,如下图:

  • 由控制端负责分析流程的运行:发送运行命令,检查分析结果,统计运行时间;运行的分析流程脚本保存在控制端。
  • 由运行环境提供分析流程的软件/工具/以及用到的各种reference和数据库文件,基于docker来构建确保开发、部署环境一致性。
  • 服务器物理机上部署基于docker的运行环境,可以灵活配置环境所占资源大小,便于调度、扩展。
  • 兼容现有环境/系统:服务器物理机已有的运行环境,可以直接接入系统,不需要重新安装配置。

3. 使用 "变量+图形化设计器" 替代传统的基于shell分析流程(shell变量+pipeline)脚本

  • 使用图形化设计器替代传统的shell脚本,1、能够快速的搭建分析流程;2、能够将现有流程导入/导出为文件;
  • 使用软件变量替换shell变量(不污染运行环境),分为三个作用域等级,按作用域从大大小:服务器变量>分析流程变量>样本变量;按变量值优先级计算:样本变量>分析流程变量>服务器变量。对于提供的变量,能够做辅助验证,文件是否存在,程序是否具有运行权限,目录是否存在等等。

4. 基于图形化的分析流程,实现对分析流程的过程控制

  • 能够手动启动、停止分析流程(停止分析流程之后,所有正在运行的程序要全部退出,释放服务器资源。包括集群系统Torque/PBS/Slurm已经投递的job等)。
  • 能够对任务输出结果做出判断,是否继续下一步。
  • 能够对任务运行时间做出统计,便于参数优化。
  • 能够保存分析输出日志,便于调试。
  • 能够实时显示分析状态,如一共多少任务,运行到哪一步,当前的状态等。
  • 能够保存分析结果,如下载分析输出文件,或者将分析结果直接保存进数据库,便于后续人工审核/渲染报告。

5. 实现从测序仪下机数据到分析结果全过程自动化

  • 自动扫描、触发分析流程:根据样本编号和分析流程输入设置,自动匹配服务器目录中的样本数据触发分析流程运行。
  • 分析流程扫描任务:可配置扫描周期,秒、分、小时。
  • 自动拆分数据:与Illumina测序仪对接,能够根据样本信息生成samplesheet完成下机数据拆分。
  • 拆分数据扫描任务:可配置扫描周期,秒、分、小时。
  • 能够实现拆分数据与分析流程联动,实现从测序仪到最终分析结果全自动完成。

6. 多账户、多角色灵活配置、业务数据灵活授权,便捷的团队协作

  • 作为一套软件系统,必备的功能就是多账户协作,用B/S架构较为合理。
  • 能够针对不同的用户配置不同的权限组合,以实现团队分工和协作。
  • 能够针对不同的业务数据设置访问权限,比如:配置哪些用户能够使用哪些服务器,哪些用户能够访问哪些分析流程(pipeline)。哪些用户能够访问的样本信息,哪些用户能够看到分析结果等等。

7. 对于管理的服务器资源能够能够做到基本的性能监控:CPU负载、内存占用、网络传输、硬盘空间

  • 能够监控接入服务器的基本性能:CPU,内存、网络、硬盘空间。
  • 监控功能部分足够简单,不消耗服务器资源。
  • 对于服务器性能设置监控阈值,超过阈值能够提示报警。
  • 性能监控任务:可配置扫描周期,秒、分、小时。
  • 能够应急使用服务器的web shell终端,便于处理一些意外情况。
  • 提供简洁的文件管理器,能够对接入服务器指定目录做简单的文件管理:上传、下载、重命名、删除等。

技术选型

为了适应各种部署方式(一体工作站,内部生产系统),方便远程管理甚至将业务放在互联网上,软件架构整体选择B/S架构,开发采用前后端分离的模式。技术选型如下:

  1. IT圈的前端技术近几年又完成了技术迭代,主流的是react/vue/angular框架了:朋友圈用的最多的是vue+element / iview或者react + ant,vue学习曲线平滑,这里选择vue+ivew;
  2. 后端(Server端)使用最常用的java微服务架构springboot2+mybatis+mysql/postgresql,使用的人多,文档齐全,更新维护频繁。数据库熟悉postgresql强于mysql,这里选择postgresql。
    • 前端需要长连接与后端实时通信,这里引入websocket实现。
    • Springboot提供了计划任务(定时任务)的功能,这里使用vue+iview 前端表单+ 后端springboot自带的Schedule实现

功能实现:Talk is cheap. Show me the ...

  • 服务器账户接入
视频内容
  • 分析流程设计
视频内容
  • 分析过程状态监控
视频内容
  • 分析流程启动和停止
视频内容
  • 服务器性能监控
视频内容

现状:经过1年多开发,几百个版本(SVN),200天以上的稳定性测试。。。。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 图形化开放式生信分析系统开发 - 6 生信分析流程批量运行与过程控制

    在上文生信分析系统开发 - 5 生信分析流程服务器端运行 解决了设计好的流程在分析服务器上运行的问题,随之而来就衍生出的新需求:

    SliverWorkspace
  • 图形化开放式生信分析系统开发 - 1 需求分析及技术实现

    从三年前开始,工作的原因接触到了NGS(二代测序)技术和相关的生信分析,在公司技术到临床应用转化过程中遇到一系列问题,在问题中挣扎、解决问题的过程中逐渐有了开发...

    SliverWorkspace
  • 图形化开放式生信分析系统开发 - 7 分析报告的模板定制与自动生成

    在前文中描述了生信分析流程的整个设计、图形化、服务器端运行、批量运行与过程控制(手动停止,恢复运行、覆盖运行),本文尝试解决分析报告的模板定制与自动生成。

    SliverWorkspace
  • engineercms文档流程完善

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    hotqin888
  • 6年做BPM的实施、开发、推广应用的一个小结

    晚上加班整理了一下这些年(从2010年就开始使用了)FlowPortal.Net BPM的使用情况,希望能从用户、流程、申请、效率、价值等角度做一些可视化的分析...

    崔文远TroyCui
  • 干货 | 携程运维工作流平台的演进之路

    作者简介 徐豪杰,携程旅行网技术保障中心流程工具团队资深软件工程师,于2013年加入携程,主要负责携程工作流平台架构设计与建设,在流程建设方面有着比较丰富的积累...

    携程技术
  • java Activiti6 工作流引擎 websocket 即时聊天 SSM源码 支持手机即时通讯聊天

    博文来源:http://www.fhadmin.org/webnewsdetail1.html

    用户1948675
  • 成功BPM项目的5个必要步骤

    决定一个BPM项目是否能成功的因素有很多,我这里讨论的是对任何业务流程都适用的步骤,而不仅仅是技术的实现步骤等。我个人认为当你对某一个流程不满意的时候,你需要改...

    崔文远TroyCui
  • Activiti 开发案例之多实例并行子流程

    以上是一个公司内部合同评审的内嵌子流程流程图,一个合同的通过是需要经过多个部门的层层审核,最终才得以通过。

    小柒2012
  • 流程平台拆分服务的总结与思考

    个人自己做了个流程平台,供自己学习研究用,自认为做得还不错! 因为整个平台只有一个应用,在微服务大行其道的时代,是不合理的,试着对该平台进行拆分。 首先介绍...

    星痕

扫码关注云+社区

领取腾讯云代金券