首页 > 其他分享 >生信流程全自动化方案

生信流程全自动化方案

时间:2024-03-10 19:56:03浏览次数:23  
标签:分析 流程 样本 测序 模块 自动化 生信

分享一下当前接触和应用的生信流程自动化分析的实现

经验一

前言

19年底刚到厦门的时候,接触了一家跟临床医院合作,提供罕见病基因检测服务的公司,生信主要对二代 DNA 杂交捕获的测序数据进行分析,人工操作步骤大致如下:

  • 拿到实验室做好的样本信息
  • 待测序公司返回数据后,需要第一时间进行 fq 数据的下载
  • 根据样本分析类型,拷贝对应的 demo 分析流程
  • 根据样本的实际信息,修改分析流程中对应的参数配置
  • 提交分析,等待分析完成后检查分析结果
  • 数据没问题了就把数据拷贝到指定路径下,交付给下游部门

刚上手分析时,这一整套操作下来就占据了半天的时间了,当分析流程还有一些异常报错,或者数据质控有问题再排查、总结问题反馈给负责人,耗时更久。

自动化方案

自动化实现的核心在于数据信息符合预期的流转。上述步骤可增加对应的脚本替代人工操作,以 python 为例:

  • 拿到实验室做好的样本信息

    1. 如果数据在 lims 类系统,可申请 API ,利用 requests 等网络请求模块获取信息。
    2. 如果是邮件附件表格,可设置虚拟邮箱,接收并解析附件的样本信息表,使用 email、pandas 等模块。
      这两操作的可将需要分析的样本信息储存到服务器上,触发方式有两种方式:
      1. 定时任务
        利用系统的 crontab 或者 python 的 schedule 模块设置定时执行,比如每分钟检查一次否有所需的邮件附件
      2. 服务接口
        使用 flask 或 fastapi 模块创建服务接口,当实验完成后,由实验员在上传样本信息表触发信息录入请求,也可以将其跟 lims 系统衔接,直接在lims 系统上触发请求。
  • 待测序公司返回数据后,需要第一时间进行 fq 数据的下载
    一般测序公司都是给云盘账号密码,客户自行下载,比如阿里云,可用 oss2 模块检测和下载,同样可以定时任务或服务接口的方式合理设定其触发时机。
    阿里云OSS存储实现文件上传和下载功能

  • 根据样本分析类型,拷贝对应的 demo 分析流程
    基础的 python 编程即可实现

  • 根据样本的实际信息,修改分析流程中对应的参数配置
    根据之前保存的样本信息操作,也只需基础的 python 编程

  • 提交分析,等待分析完成后检查分析结果
    任务提交可以用 python自带的 subprocess 模块,Popen方法允许任务挂起到后台(不阻塞主进程),后续再用对应的方法判断任务完成情况等

  • 数据没问题了就把数据拷贝到指定路径下,交付给下游部门
    通过 smtplib 和 email 模块发送分析结果邮件给下游部门

经验二

前言

后续转战另一个体系突变检测的公司,该公司自己有多种测序仪,而且产品十多个,对应的分析流程就更多了,扩增子的、杂交捕获的、单样本的、配对的,甚至繁琐,各流程都是各自存放一个路径,一旦某些比较通用的脚本需要更新,那真是是鼓噪乏味的 copy ,而且容易出错。

考虑到后续更新维护的便捷、高效,在进行自动化之前将之前的流程进行了模块化,尽量同一功能的脚本使用同一份。

自动化方案

实现的大体方向与上面思路一致,但是公司有测序仪,又有外送测序,结果交付方式多种,某些数据流转有差别:

  • 拿到实验室做好的样本信息
    由于生信内部有 4 人的 IT 团队,开发了自动化系统(包含样本录入、结果展示、出具报告), 从 API 上直接可以拿到待分析样本信息的列表(样本导入由报告组的人完成,生信属于研发部下)

  • 测序数据监控
    一方面要监控各测序仪的数据下机,通过 IT 部做的备份机制,fq 数据都被同步到 NAS 上,然后自动化分析通过监控备份日志判断芯片是否下机完成。
    另一方面外送数据的返回与之前的方案一样,用阿里云的模块监控即可

  • 根据样本分析类型,组装 snakemake 主流程
    也是一些基础的 python 逻辑即可实现

  • 根据样本的实际信息,修改分析流程中对应的参数配置
    基础 python 编程即可

  • 提交分析
    由于样本量多,大 panel 捕获流程吃服务器资源多,需要多台服务器同时分析这些样本才能保证交付时效,因此将自动化分析分成两个模块,监控模块只需运行在某一台服务器上,将需要分析的样本合理分配给分析服务器(没有配置集群的尴尬。。。)提交分析的模块需要在每一台分析服务器上都部署,然后各服务器挂在同一个 NAS 以实现信息的互通(当时 API 不熟,没有采用 API 的形式进行服务器之间分析任务的通信)
    任务结果核对和结果检查也跟上面那个一致

  • 数据交付
    结果会传回 IT 的 web 端,也会拷贝到 NAS 的方式进行交付(报告组目前还习惯用 NAS)

其他功能

一个复杂的系统实现之后,总是能发现可以优化的地方,就好比经验二中的分析系统,其中增加了相当多的特殊功能:

  • 样本补测分析
  • 样本重测分析(如果是配对分析,重测了其中一个,另一个样本允许不重新分析的)
  • 前端删除后又重复录入的样本不重复分析
  • 质控异常钉钉提醒
  • 流程报错自动重新提交分析(比如未知原因的 I/O 错误)
  • 支持集群或多分析服务器两种模式

总结

这两个自动化方案都是基于自身工作的需求,这种重复性很高、麻烦又容易出错的操作,我就会想通过代码的形式取代,空闲出工作时间,才能有时间、精力去接触、学习更多工作上的新东西。因此,从招我做临检的活变成了专职做自动化了,加油,会越来越有价值的!

标签:分析,流程,样本,测序,模块,自动化,生信
From: https://www.cnblogs.com/magower/p/18064690

相关文章

  • 第16章_变量、流程控制与游标
    第16章_变量、流程控制与游标讲师:尚硅谷-宋红康(江湖人称:康师傅)官网:http://www.atguigu.com1.变量在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。在MySQL数据库中,变量分为系统变量以及用户自定义变量。1.1系统变......
  • App自动化测试之元素定位及常用方法
    1.元素定位appium元素定位方式跟selenium是一样的通过appium客户端启动服务器自动连接手机之后,进入对应的被测app以及界面app有不同的界面和不同的功能app的界面主要是以元素构成需要对界面功能进入自动化测试就一定要定位该界面元素执行对应的操作方法对手机app的界面进......
  • 从0-1搭建一个自动化部署平台
    以Java服务为例,说明如何搭建一个自动化部署平台DevOps。第一步:准备基础设施服务器:准备至少一台用于部署的服务器,推荐使用云服务提供商的虚拟机或容器服务。操作系统:安装Linux操作系统,如Ubuntu、CentOS等。网络:确保服务器可以访问互联网,以便下载所需的软件和工具。第二步:安......
  • 三.接口自动化项目1
    一.接口自动化需求分析:接口自动化测试用例:1.用例写在excel表格里面,定义函数获取excel表格中数据并加入到用例列表中进行返回a.Excel表格中的数据只有url/请求方式、请求参数、headers、是否json、预期结果才是有效数据b.请求参数定义格式是"xxx=123,sss>456,phone=<phone>"......
  • 下载Visio 2021专业版流程图软件
    Visio2021专业版是微软公司推出的一款功能强大的流程图和图表制作软件,可以帮助用户快速创建各种类型的图表、流程图、组织结构图、楼层图等等。主要功能:丰富的模板和形状:Visio2021专业版提供了大量的模板和形状,涵盖了各种行业和领域,例如:商业:流程图、组织结构图、甘......
  • ModbusTCP协议简介与编程流程图
      本文主要目的是为了写一个简单的ModbusTCP服务器-客户端程序而记录的知识点,里面包含了编程所需要的必要背景知识和协议解析流程图。Modbus基本数据类型  Modbus有四种基本数据类型:离散量输入:客户端只能读取它,由服务器提供,占1个比特位,可以传输现实中的开关量输入,比如接近......
  • python+pytest接口自动化之测试函数、测试类/测试方法的封装
    前言今天呢,笔者想和大家聊聊python+pytest接口自动化中将代码进行封装,只有将测试代码进行封装,才能被测试框架识别执行。例如单个接口的请求代码如下:importrequestsheaders={"user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,l......
  • 如何从0开始做自动化测试?
    自动化测试是使用软件工具在应用程序上自动运行测试的过程,无需任何人为干预。这可以通过减少手动测试的需要来保存时间并提高软件开发过程的效率。由于人为错误或不一致性,手动测试可能容易出错,这可能导致错误未被检测到。自动化测试通过提供一致和可靠的方法来测试应用程序,从而消......
  • app自动化测试环境安装和原理解析
    1.移动测试的基本介绍定义:测试手机程序:appApp程序测试点:功能测试安装卸载测试升级测试兼容性测试不同的手机的系统使用测试环境不同androidios其他:基于Android二次开发系统华为:鸿蒙系统小米:澎湃系统网络切换网络终端使用中来电,短信横竖屏切换健壮性......
  • MYSQL学习笔记17: 流程控制函数(IF, CASE)
    流程控制函数(IF,CASE)ifselectif(true,'ok','error');selectif(false,'ok','error');/*相当于iftrue:ok;else:error;*/ifnullselectifnull('ok','default');selectifnull(......