我正努力将我的样本表(TSV)整合到我的管道中。具体来说,我想手动定义样本通配符,而不是从补丁中读取它。原因是不应该分析路径中的所有样本。相反,我制作了一个样本表,其中包含样本列表,找到的路径,参考基因组等等。
表格如下:
name path reference
sample1 path/to/fastq/files mm9
sample2 path/to/fastq/files mm9
我在snakefile
:
table_samples = pd.read_table(config["samples"], index_col="name")
SAMPLES = table_samples.index.values.tolist()
第一条规则应该在里面合并FASTQ文件,所以做这样的事情会很好:
rule merge_fastq:
output: "{sample}/{sample}.fastq.gz"
params: path = table_samples['path'][{sample}]
shell: """
cat {params.path}/*.fastq.gz > {output}
"""
但如上所述,由于未定义样本通配符,因此无法正常工作。有没有办法可以说我上面定义的样本列表(SAMPLES)包含了应该执行规则的所有样本?
老实说,我觉得这个问题很愚蠢,但我已经花了几个小时寻找/搜索解决方案,此时我需要更多时间效率:D
谢谢!
答案 0 :(得分:1)
您只需要一个目标规则,列出规则“merge_fastq”后您想要的所有具体文件:
rule all:
input: expand("{sample}/{sample}.fastq.gz",sample=SAMPLES)
此规则必须放在其他规则的顶部。只有在工作流结束时定义所需的具体文件时,才能使用通配符。