snakemake 学习(2)

举一个小例子:

通过在Snakefile中指定规则来定义Snakemake工作流。 规则通过指定如何从输入文件集创建输出文件集将工作流分解为小步骤(例如,单个工具的应用)。Snakemake 通过匹配文件名自动确定规则之间的依赖关系

1、比对reads

# 首先创建Snakefile文件,然后在文件中编写规则,写完后要记得给Snakefile加可操作权限-x
如果不是写在Snakefile文件,则snakemake --snakefile 文件名

rule bwa_map:
    input:
        "data/genome.fa",   #常见错误是忘记输入或输出项之间的逗号。由于Python连接后续字符串,这可能会导致意外行为。
        "data/samples/A.fastq"
    output:
        "mapped_reads/A.bam"
    shell:
        "bwa mem {input} | samtools view -Sb - > {output}"
#以下文字文字为上述规则解读: 
一个Snakemake规则有一个名称(此处为bwa_map)和一些指示(此处为input,output和shell)
在input和output指令之后是那些预计将在规则中使用或创建的文件列表在最简单的情况下,这些只是Python字符串
shell指令后跟一个包含要执行的shell命令,此处通过{input}和{output}来指定输入文件和输出文件
由于规则有多个输入文件,所以Snakemake将用空格将它们连接起来
换句话说,Snakemake在执行命令之前将用data/genome.fa data/samples/A.fastq替换{input}
bwa mem的输出通过管道成为samtools view的输入,最终输出到规则中的{output}中

2、bwa_map规则批处理

显然,该规则仅适用于具有文件读取的单个样本data/samples/A.fastq。但是,Snakemake允许使用命名通配符来使规则可批处理。只需用通配符{sample}替换第二个输入文件A和输出文件。

SAMPLES = ['A','B','C']

rule all:
    input:
        expand('mapped_reads/{sample}.bam', sample=SAMPLES)

rule bwa_map:
    input:
        "data/genome.fa",
        "data/samples/{sample}.fastq"
    output:
        "mapped_reads/{sample}.bam"
    shell:
        "bwa mem {input} | samtools view -Sb - > {output}"
#以下为注释
此前碰到这个问题:WorkflowError:
Target rules may not contain wildcards. Please specify concrete files or a rule without wildcards.
直译过来是:目标规则可能不包含通配符,请指定没有通配符的具体文件或规则
看似是通配符的使用问题,实则和 rule all 的 input 错误有关
Snakemake的rule all需要输入一个列表,这个列表包括所有的步骤会产生的文件(也就是output)
实际上,Snakemake的工作机制是先通过shell产生output文件,再检查这些output文件是否在指定的目录下存在,确认存在后再执行下一个rule 
这个检查过程就是通过寻找rule all下的input列表完成的
因此,在input列表没写清楚的情况下,如果在rule中还使用的通配符,就会发生相应的报错
改正方法就是修改你的input列表,确认每一个rule输出的文件和他们的目录都存在于input列表下

此外,请注意,如果rule有多个输出文件,Snakemake要求它们都具有完全相同的通配符。否则,可能会发生同一rule中的两个job写同一个文件。

snakemake对于没有关联的rule,其顺序按rule名字母顺序来

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容