【发布时间】:2018-10-01 20:43:43
【问题描述】:
我正致力于在snakemake 中实现一个非常简单的管道,希望用一个有凝聚力的Snakefile 替换一系列烦人的bash 脚本。
我在编写将文件拆分为较小部分的规则时遇到问题(使用 GNU 拆分),然后导致输出连接在一起的第二条规则。
我不知道在 concat 步骤中为输入写什么,因为我不知道如何定义所有适合模式 bam_files/test* 的文件。我尝试使用 glob,但这显然不起作用(看起来它实际上是在包含 glob 的情况下完全跳过 split )。有没有更好的方法可以做到这一点?
# test snakemake pipeline
import glob
SAMPLE_IDS = ["test"]
rule all:
input:
expand("bam_files/{FASTQ}.out", FASTQ=SAMPLE_IDS)
rule split:
input:
expand("{FASTQ}.txt", FASTQ=SAMPLE_IDS)
output:
"bam_files/{FASTQ}."
shell:
"cat {input} | split -l 1000 -d - {output}."
rule concat:
input:
split_files = glob.glob("bam_files/{FASTQ}.*")
output:
"bam_files/{FASTQ}.out"
shell:
"cat {input} > {output}"
【问题讨论】:
-
你看过
dynamic()吗? Source