snakemake-搭建个性化分析流程(一)

题外话:
    公众号更新慢的主要原因是:
课题难做,寸步难行。老板push,每周两次。马上出站,啥也没有。
So:选择和合适的实验室尤为重要,跨度太大,容易闪到胯。博士做Methods的,一定不要选做机制的实验,不然那啥都疼。

    介绍snakemake之前,先上张图,这是最近自学一周snakemake写的做比较复杂的MeRIP-seq、chip-seq,ATAC-seq等的通用流程,因为想做到尽量多的通用,所以脚本逻辑复杂,坑也多,填坑花了一天。整套流程包含了:

整个流程包括:

从配置文件中指定的sra连接自动下载sra测序数据 -> fastq-dump -> QC -> 去除rRNA(可选) -> 比对 -> picard去重复 -> macs2 callpeak -> macs2-bdgdiff鉴定差异 -> peak deeptools转bw。

√整套流程只需要配置好yaml文件,然后一键执行,等待结果就好;

√该流程对Ip和Input组——全是单端测序,全是双端测序以及单双端测序数据混合均可正常处理,这也是流程里逻辑比较复杂的环节之一。

后续改进计划:

√ 继续接入RNA-seq对input组进行差异表达分析,并自动生成结果报告;

√ 完成后接入到我自己的网站投入使用。

——————snakemake是啥————————

    Snakemake 是一个用于构建工作流管理系统的工具,主要用来创建可重复和可扩展数据分析工作流,文件一般后缀名为“.smk”。如果我们将各种测序数据分析用到的不同软件和脚本比做工厂的一条流水线上的机器和材料,那么snakemake所做的就是将这些需要用到的机器和材料构建成一条可以自动化的完整流水线,它本身不是编程语言,而更像是“一根针线”,能将不同编程语言的代码和脚本“”串连“”起来纯属个人理解
    snakemake构建的工作流是基于 Python 编程语言进行描述的,可以无缝扩展到服务器、集群、网格和云环境,而无需修改工作流定义。最后,Snakemake 工作流程可能需要对所需软件的描述,这些软件将自动部署到任何执行环境中。

————–snakemake的优势—————–——

√ 流程搭建简单易懂,易学习;

√ 基于python构建工作流,编程语言简单,可读性强;

√ 可重复性高。可将流程拆分成成不同的子流程,并分别编写成单个的“模块smk”,以后用于灵活拼凑不同的分析流程。比如:NGS测序数据的质控、比对、去重复分别写成单独的smk模块后,既可以用于RNA-seq数据分析的流程,也可以用于MeRIP-seq等流程中;

√ 可扩展性好:可结合conda 环境和配置文件,可以轻松实现环境的导出,扩展至其他环境下。另外,可以在rule规则中使用多种语言组合完成同一个任务,比如script既可以运行shell,python,也可以用于R,Rust等等;

√技术成熟,常规分析都能查到别人写好的流程,比如RNA-seq,Chip-seq等,网上的文档比较多、比较全。

———————-snakemake的不足————————

√ 官方文档杂乱繁杂,不易读懂;

√ 细节比较多,简单流程易学,但是复杂流程逻辑复杂,需要边学边用;

√ snakemake的wildcards(命名空间/通配符)相对有点难理解,有时需要顿悟,哈哈,没错,就是顿悟。

———————snakemake所需的基础—————–

    很早之前就听过snakemake了,也用过别人写的流程,但是当时没去研究过它,主要还是以前做CRIPSR实验比较多,没精力和时间。现在课题做m6A机制的,做了一堆MeRIP-seq。既然课题快整不下去了,那就把时间拿来研究一下snakemake。结果发现“相见甚早,可相识甚晚”。一个字:“棒”。

    对于snakemake所需的基础,不需要太多基础,肯花时间去研究去试错就OK。主要需要稍微了解以下两点:

√ 简单的python编程语言,因为snakemake是以python3为基础去定义工作流的,换句话说,整个写的smk文件里,变量定义、路径解析、条件判断,循环执行等等全是python。但是,对于不熟悉python的也没关系,解决办法就是:简单去学习一下python常规语法,也就是简单编程就好。

推荐个学习python3的网站:https://www.runoob.com/python3/python3-tutorial.html(Python3 教程 | 菜鸟教程 (runoob.com)),这是入门教程,亲测好用,主要是免费。Get到了就记得给我一个点赞和转发。

√ 需要必备的linux基础,比如常规的命令:cd,mkdir,rm,cp,mv,awk,grep,cut,sed等等。不需要太复杂的,会用vi写简单的shell命令就好。


——————————–下期预告——————————

√ 下期讲解如何使用conda构建snakemake的环境,以及snakemake的基础知识;

√ 构建简单的RNA-seq流程


觉得有用,不妨动动你发财的小手点个赞,然后转发一下,在下感激不尽~



扫描上方 二维码 关注我

——————————————–

祝您:月月有结果,年年有文章!



本篇文章来源于微信公众号:微因

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注