搜索
查看: 41|回复: 0

生信分析系统开发-需求分析及技术实现V2(2020.7)

[复制链接]

12

主题

15

帖子

298

积分

中级会员

Rank: 3Rank: 3

积分
298
发表于 6 天前 | 显示全部楼层 |阅读模式
本帖最后由 豆浆包子 于 2020-7-31 15:10 编辑

[code]markdown
起因/背景
从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架构,开发采用前后端分离的模式。技术选型如下:
  • IT圈的前端技术近几年又完成了技术迭代,主流的是react/vue/angular框架了:朋友圈用的最多的是vue+element / iview或者react + ant,vue学习曲线平滑,这里选择vue+ivew;
  • 后端(Server端)使用最常用的java微服务架构springboot2+mybatis+mysql/postgresql,使用的人多,文档齐全,更新维护频繁。数据库熟悉postgresql强于mysql,这里选择postgresql。

    • 前端需要长连接与后端实时通信,这里引入websocket实现。
    • Springboot提供了计划任务(定时任务)的功能,这里使用vue+iview 前端表单+ 后端springboot自带的Schedule实现


功能实现:Talk is cheap. Show me the ...现状:经过1年多开发,几百个版本(SVN),200天以上的稳定性测试。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2020-8-4 19:10 , Processed in 0.180053 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.