zoukankan      html  css  js  c++  java
  • 部署一个简单的生信分析流程

    在生信公司里,有相当一部分人都是负责编写流程和维护流程。

    流程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准备的待执行脚本, 包含了脚本的执行逻辑, 以及每个脚本执行时所需的内存.


    看了别人的流程, 发现都不够完美, 因为我不熟悉面向对象的编程思想, 但我对模块化编程思想的理解已经非常深刻了, 我觉得一个好的流程一定得模块化, 各个功能之间相互独立, 大问题划分为小问题, 这样在写代码、调试和以后流程修改时就非常简单和方便了,效率大大的提高了,别人要干一个季度的事,我一个月就可以搞定。

     

     

    参考:手把手教你编写一个具有基本功能的shell(已开源)

  • 相关阅读:
    mvc view返回值
    ASP.NET MVC Core的ViewComponent【视图组件】
    原型模型
    RabbitMQ学习
    SVN知识点总结
    微信开发遇到的问题(单页应用静态资源缓存策略设置)
    arm nfs 启动
    gdb exe control
    gdb take care of c macros
    gdb --- Convenience Variables
  • 原文地址:https://www.cnblogs.com/leezx/p/6109911.html
Copyright © 2011-2022 走看看