snkemake入门

一、背景介绍

snakemake是一种用于自动化流程的开源工具,是一款基于python3的软件。在生物信息学、高通量测序数据分析、大规模数据处理等领域非常流行。

snakemake的官网:Snakemake | Snakemake 8.16.0 documentationicon-default.png?t=N7T8https://snakemake.readthedocs.io/en/stable/

二、sankemake的安装

conda activate base
conda install -c conda-forge mamba
conda deactivate
mamba create -n snakemake -c conda-forge -c bioconda snakemake
conda activate snakemake
snakemake --help
conda deactivate
#删除环境
conda remove --all -n snakemake


#这里采用一种新的安装软件mamba,说是可以更快的加载和下载conda安装软件的速度,你也可以直接用conda安装

三、snakemake的书写规则

依据不同rule的输入和输出将其连接起来,形成一个完整的pipeline。

当检测到input,就执行相应的rule;检测到output,就跳过相应的rule。因此这个pipeline的逻辑是这样的,不是你要写一个rule的逻辑关系,而是用输入和输出控制。

snakemake在执行时,会默认执行第一条规则,因此我们会先写rule all。

之后依据rule all找逻辑,再执行。不是按照从上到下依次执行,因此rule的书写先后不影响执行,但是一般我们会依次书写方便阅读。(若第一个不是rule all,则默认执行第一个rule,然后找逻辑,最后退出)

若一个rule的输入是多个其他rule的结果,因此,这个rule一定会在所有输入都有条件下才会执行。

四、snakemake两种典型格式

rule fastp:
    input:
        cleandata_raw_R1="path/to/{sample}.R1.fq.gz"
        cleandata_raw_R2="path/to/{sample}.R2.fq.gz"
    output:
        b="{sample}.bam"
    params:
        n_d= 4
    shell:
        "bwt men -t {params[0]} {input[0]} {input[1]} > {output[0]}"


#或者是这样写,如下:
rule fastp:
	input:
		"path/to/{sample}.R1.fq"
		"path/to/{sample}.R2.fq"
	output:
		"{sample}.bam"
	params:
		"4"						
	shell:
		"bwt men -t {params[0]} {input[0]} {input[1]} > {output[0]}"
rule sort:
    input:
        "path/to/{dataset}.txt"
    output:
        "{dataset}.sorted.txt"
    log:
		"{dataset}.sort.log"
    run:
		with open(output.b, "w") as out:
			for l in sorted(open(input.a)):
				print(l,file=out)

#或者如下,不过还是建议赋给一个变量名。

rule sort:
	input:
		file1="path/to/{dataset}.txt"
	output:
		file2="{dataset}.sorted.txt"
	log:
		"{dataset}.sort.log"
	run:
		with open(output.b, "w") as out:
			for l in sorted(open(input.a)):
				print(l,file=out)

rule格式:

  • 起始行(规则命名)rule+名称
  • 使用TAB键缩进/四个空格
  • 双引号""的使用
  • 输入和输出的定义:直接写/赋给一个变量名
  • 输入和输出的引用:起始下标是0(和python语法一致,从零开始)。使用花括号{}。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值