部署一个简单的生信分析流程
2023-09-27 14:27:39 时间
在生信公司里,有相当一部分人都是负责编写流程和维护流程。
流程pipeline,就是让用户(前端)在填写配置文件后能够一键运行的脚本,最终自动得出结果,并生成报告,有的公司还会将结果上传。
自动化pipeline必须具备的功能:
- 读取配置文件,生成相应的待执行的脚本
- 按照先后逻辑关系依次向集群投递任务
- 能将大任务分割成小的任务,并行执行,缩短项目周期
必须使用的工具:
- 一门脚本语言,Shell、Perl 或 Python
- 集群调度系统工具,SGE 或 monitor
- 工具必须都使用绝对路径,因为这脚本是给同部门的人用的,如果你要提高可移植性,可以将工具路径写到配置文件里。
- 写流程前,最好先画出 pipeline 的分析流程图
- 配置好软件工具及库的路径
首先所有的模块生成都是使用了一个脚本:
sh run.sh
脚本内容为:
perl generate.pl -conf XX.conf -list sample.list -outdir result
执行后, 会在本地生成所有的框架.
最终前端只需要执行result里的一个脚本就可以了:
sh qsub.sh
脚本里的内容:
monitor taskmonitor <Grid set> -i qsub.conf
配置文件conf里的内容:
<script 1>:<mem> <script 2>:<mem> <script 1>:<mem> <script 3>:<mem> <script 3>:<mem> <script 4>:<mem>
是monitor准备的待执行脚本, 包含了脚本的执行逻辑, 以及每个脚本执行时所需的内存.
看了别人的流程, 发现都不够完美, 因为我不熟悉面向对象的编程思想, 但我对模块化编程思想的理解已经非常深刻了, 我觉得一个好的流程一定得模块化, 各个功能之间相互独立, 大问题划分为小问题, 这样在写代码、调试和以后流程修改时就非常简单和方便了,效率大大的提高了,别人要干一个季度的事,我一个月就可以搞定。
相关文章
- 软件开发流程
- Jmeter性能测试的标准流程
- docker服务器部署,coding推送,全流程详细介绍
- 复杂任务中,流程的解耦设计
- Android五天乐(第一天)开发环境的部署,开发流程与调试
- Kent Beck揭秘Facebook开发部署流程
- 宁波宁海智能汽车小镇电脑设置流程
- 13activiti - 流程管理定义(部署流程定义)
- 基于 Docker ( Gitlab、Gitlab Runner ) 搭建一整套自动化CI、CD流程,完成从代码提交到自动打包编译到自动部署运行
- C# 流程控制语句
- Python分享:如何做数据分析,数据分析流程是什么?
- WebStackHugo导航开源项目部署流程和内容一键配置
- mbed TLS ------ 读数据流程分析
- 【framework】ATMS启动流程
- Nginx得知——流程模型(worker流程)
- 一款APP的完整开发流程 (转载)
- 全流程搞清楚 Kubernetes API 的使用,可进行业务二次开发对接 k8s 调用,详细图文说明以及常见问题整理
- 微信小程序部署流程
- flowable学习二流程部署,定义,删除流程实例,启动一个流程实例,任务查询,完成当任务