【发布时间】:2020-10-12 13:15:52
【问题描述】:
我得到一个相当简单的规则的错误。我必须为另一个程序编写一个任务文件,需要一个 tsv 文件。我从配置文件中读取了一定数量的参数,并使用 shell 命令将它们写入文件。
代码:
rule create_tasks:
output:
temp("tasks_{sample}.tsv")
params:
ID="{sample}",
file=lambda wc: samples["path"][wc.sample] ,
bigwig=lambda wc: samples["bigwig"][wc.sample] ,
ambig=lambda wc: samples["ambig"][wc.sample]
shell:
'echo -e "{params.ID}\t{params.file}" > {output}'
当我执行工作流时,我收到以下错误:
Building DAG of jobs...
Using shell: /usr/bin/bash
Provided cluster nodes: 1
Job counts:
count jobs
1 create_tasks
1
[Mon Oct 12 14:48:15 2020]
rule create_tasks:
output: tasks_sampleA.tsv
jobid: 0
wildcards: sample=sampleA
echo -e "sampleA /Path/To/sampleA.bed " > tasks_sampleA.tsv
WorkflowError in line 23 of /path/to/workflow.snakefile:
'Wildcards' object has no attribute 'output'
File "/path/to/miniconda/envs/snakemake_submit/lib/python3.8/site-packages/snakemake/executors/__init__.py", line 111, in run_jobs
File "/path/to/miniconda/envs/snakemake_submit/lib/python3.8/site-packages/snakemake/executors/__init__.py", line 1233, in run
我应该提一下,其中两个变量是空的,我希望 echo 命令中有制表符/空格。
有人解释一下,为什么snakemake 试图在通配符中查找输出?我特别困惑,因为它正在打印正确的命令。
【问题讨论】:
-
这很奇怪!你用的是什么蛇形版本?第 (23) 行是否符合相同的规则?你能举一个我们也可以自己运行的小例子吗?
-
是的,该行对应相同的规则。我不知道出了什么问题,但显然这是一个不相关的错误(它突然又工作了,可能是一些服务器问题)。
标签: shell output wildcard rules snakemake