图形化开放式生信分析系统开发- 1基本需求分析及技术实现
图形化开放式生信分析系统开发- 1基本需求分析及技术实现
- 起因/背景
- 软件获取:到官网sliverworkspace.com免费下载个人版,最新版本 2.0.277363
- 几张图片
- 下面进入正题,以具体个人工作经历为例,分析归纳出需求:
- 实践问题一,图形化替代命令行脚本交互
- 实践问题二,解决迁移部署问题
- 实践问题三,解决环境搭建、软件安装问题
- 需求:分析流程(pipeline)能够快速部署迁移
- 技术实现:使用虚拟化技术:
- 实践问题四:实现全流程自动化/提高效率降低成本
- 最终软件架构设计如图:
起因/背景
从三年前开始,工作的原因接触到了NGS(二代测序)技术和相关的生信分析,在公司技术到临床应用转化过程中遇到一系列问题,遇到的坑多了,有了开发一套通用生信生产系统的想法,目前已经完成了第一个版本开发,有必要做一下记录并复盘:本文为本系列文章的第一篇。
软件获取:到官网sliverworkspace.com免费下载个人版,最新版本 2.0.277363
几张图片
分析流程(pipeline)设计:基于文件输入输出的图形化工作流设计,适用所有分析流程
分析结果保存:配置输出文件数据结构,可以直接保存进数据库
配置分析流程(pipeline)自动运行:可以选择多长时间轮询一次,哪个时间点触发执行
分析结果过滤:较为复杂的分析结果,可以人工过滤,并将过滤结果导出生成分析报告
分析流程(pipeline)运行:可以中途停止,并在停止位置恢复运行,统计运行结果
服务器性能监控:CPU、内存、网络、硬盘空间
分析报告模板及输出结果:模板是word格式,便于自定义/DIY。
下面进入正题,以具体个人工作经历为例,分析归纳出需求:
实践问题一,图形化替代命令行脚本交互
- 我司技术上,陆陆续续完成了十几个项目,十几条pipeline,生信大佬们写的那些500行的shell脚本,基本上要求使用运行人员处在一定技术水平(熟悉Linux系统,熟悉shell,perl,python,R编程中的一种),这就限制了使用范围。后来公司基于脚本的基础上也实现了部分自动化,但仍不能满足以下情况:
- 产品注册:广州燃石、诺禾致源、厦门艾德、南京世和等都在进行并完成基于NGS技术的IVD(体外诊断试剂,医疗器械子分类)产品注册。NMPA(原CFDA,国家药监局)就要求这些软件产品必须要有友好的交互界面;要求软件产品经过严格的测试,从单元测试>集成测试>功能测试>性能&稳定性测试;并对分析结果进行临床试验验证。IVD产品应用于临床,须要严谨的验证过程。各个公司的pipeline过不过的了这一关,是个疑问。
- 产品投放:我司还有很多同行将开发完成的试剂盒、试验过程、分析软件作为一整套方案投放到医院科室,出于用户角度考虑,尽可能的实现整套方案的自动化,方便用户使用。曾经听过有的同行要求用户输入一条全自动分析脚本,对方三次都输入错误,还怪用户太笨的段子。
- 内部运营:如果运行软件的不要求熟悉Linux系统,shell,perl,python,R编程等专业技能,是否就能够减少专业人员数量并降低了成本?这里也可以通过自动化脚本实现。
- 结合以上,可以得出需求:
- 图形化交互界面(UI)优于命令行脚本,交互界面:B/S架构的优于C/S架构(升级维护方便)
- 通用图形界面优于非通用图形界面,避免重复开发。
图形程序和分析流程是一对多关系,图形程序能够快速组装分析流程由脚本工具到软件产品生信分析流程抽象上来说其实是基于文件的工作流,如果可以基于B/S实现工作流设计器,图形的工作流能够转换为分析流程脚本运行,也就基本实现了通用化目标。 - 自动化优于手动运行,图形配置自动运行参数优于脚本配置
- 针对以上需求,并结合自身知识结构,做出技术选型如下:
隔壁IT圈B/S技术,越来越多的采用前后端分离实现,前端(Browser端):容易上手的vue+element / iview或者react + ant,vue学习曲线平滑,这里选择vue;前端需要长连接与后端通信,这里引入websocket实现。
后端(Server端)使用最常用的java微服务架构springboot2+mybatis+mysql/postgresql,使用的人多,文档齐全,更新维护频繁。数据库熟悉pg强于mysql,这里选择pg。需要前端javascript实现图形化的分析流程设计器,后面会详细讲,如图1。
Springboot提供了计划任务(定时任务)的功能,这里使用vue+iview 前端表单+ 后端springboot自带的Scheduling实现
实践问题二,解决迁移部署问题
- 刚加入公司时候:公司美国团队某跌落神坛的大佬写的一套分析流程,部署在ubuntu14.04上,迁移到ubuntu16.04遇到问题,某些底层代码或者库不兼容,具体原因不详,简单的说就是部署迁移成本高。
实践问题三,解决环境搭建、软件安装问题
- 每一套分析流程(pipeline)都要安装一大堆工具软件,如bwa,samtools,gatk,annovar,snpeff等等;安装配置过程相当痛苦。
需求:分析流程(pipeline)能够快速部署迁移
技术实现:使用虚拟化技术:
A、 虚拟机技术Vmware,Virtualbox
B、 Docker
A、B 都可以满足需求,经过比对,Vmware,Virtualbox这种比较“重”,Docker目前在隔壁IT圈已经大范围使用,具有占用资源小,运行效率高等一系列优势,这里推荐Docker。无论是虚拟机还是Docker将部署好的pipeline作成镜像,就可以部署、迁移了,不用每次都重新安装、配置。导入Docker/虚拟机镜像的方便程度远远高于全新安装。如果不是因为那大几百G的reference文件,直接就可以做到全自动分发、部署。
实践问题四:实现全流程自动化/提高效率降低成本
之前公司在公司信息化上的投入很大,包括硬件和软件。但是整个流程上还是有几个点是靠人工完成:
- 测序仪下机数据拆分,原因是购买的样本系统和生信分析没有完成对接
- 拆分数据完成后,需要人工启动分析流程,人工判断需要运行什么分析项目
- 分析完成之后,输出的报告,需要人工修改报告格式,这里消耗很大人力,尤其是使用life测序系统
需求:实现从样本录入之后,测序仪拆分数据、启动分析流程、到分析结果储存、分析报告导出全流程自动化
实现:根据以上需求,总结得到自动运行结构如图(Illumina机型):
自动运行结构如图(针对Illumina机型):
最终软件架构设计如图:
您可以下载PPT或加QQ群:853718264讨论
图形化开放式生信分析系统开发- 1基本需求分析及技术实现相关推荐
- 图形化开放式生信分析系统开发 - 9 Illumina测序仪测序数据自动拆分
前文链接: 图形化开放式生信分析系统开发 - 1 需求分析及技术实现 图形化开放式生信分析系统开发 - 2 样本信息处理 图形化开放式生信分析系统开发 - 3 生信分析流程的进化 图形化开放式生信分析 ...
- 图形化开放式生信分析系统开发 - 7 分析报告的模板定制与自动生成
前文链接: 图形化开放式生信分析云平台产品开发 - 1 需求分析及技术实现 图形化开放式生信分析云平台产品开发 - 2 样本信息处理 图形化开放式生信分析云平台产品开发 - 3 生信分析流程的进化 图 ...
- 属于服务器端运行的程序_生信分析云平台产品开发 - 5 生信分析pipeline服务器端运行...
在上文 [生信分析云平台产品开发 - 4 生信分析pipeline的图形化] 讨论了生信分析pipeline的图形化,如何用图形的方式显示生信pipeline,但是pipeline脚本按照变量的形式保 ...
- Docker,使生信分析更简单、可重复
[摘要] 本文向生信领域的人推荐了Docker容器技术,它使得生物基因领域的生信处理流程跟简单,过程可以很容易的重复.有助于减轻负担,加速生命探索. 先抛一个主题:每一个跑生信分析的人都应该知道Doc ...
- 一览生信分析的各种工作环境—Linux子系统、双系统、虚拟机和Docker
" 本文围绕计算机操作系统,概述了当下各种生信分析的工作环境." 一文掌握Conda软件安装:虚拟环境.软件通道.加速solving.跨服务器迁移 01 - Linux子系统 Wi ...
- 生信分析流程构建的几大流派
导言 构建生信分析流程是生物信息学从业人员必备的技能之一,对该项能力的评估常常是各大公司招录人员的参考项目之一. 在进行 ngsjs 项目时,我做了一张示意图来表示一些高通量测序数据分析项目重现性的要 ...
- iMeta | Sangerbox: 交互式整合临床生信分析平台
点击蓝字 关注我们 Sangerbox:交互.友好的整合临床生信分析平台 https://doi.org/10.1002/imt2.36 ●2022年7月8日,哈尔滨医科大学宋湘团队联合杭州慕谷科技有 ...
- 这是入门生信,学习生信分析思路和数据可视化的首选?
封面来源:https://www.zhihu.com/question/304747766 常规转录组是我们最常接触到的一种高通量测序数据类型,其实验方法成熟,花费较低,是大部分CNS必备的技术,以后 ...
- 我失业了?| ChatGPT生信分析初体验
最近ChatGPT火的一塌糊涂,作为在生物医学和计算机科学领域夹缝求生的边缘摇摆人,也来蹭一波热度. ChatGPT是一个预训练的语言模型,由OpenAI训练.它可以用来生成自然语言文本,并且可以进行 ...
最新文章
- JBPM4常见错误汇总
- srv.sys蓝屏解决补丁_电脑蓝屏重启怎么解决?
- android 打印机打印html,Android下通过wifi调用打印机打印
- Failed to instantiate [org.springframework.test.context.web.ServletTestExecute
- 浅析路径遍历漏洞 文/饭
- PIP 安装 numpy
- 多php共用一个mysqli连接,在pHP中使用MySQLi连接到多个数据库
- maven spring 使用memcached方法
- PyTorch搭建AlexNet模型(在CIFAR10数据集上准确率达到了85%)
- 计算机蓝牙快捷键,电脑蓝牙怎么开,详细教您怎么打开电脑蓝牙
- 25个令人难忘的广告设计
- c语言错误中numeric,LC_NUMERIC
- 苏嵌//张朋//2018.07.16
- Pacemaker入门手册
- IDA Crack so文件
- 数据挖掘学习——SOM网络聚类算法+python代码实现
- 苹果手机(iPhone)添加outlook邮箱设置
- flyme7 android彩蛋,Flyme 7内置彩蛋功能:520教你如何脱颖而出
- 学习软件测试要掌握什么基本知识?
- SizeBalanceTree详解(含代码实现)