我正在使用slurm集群来启动snakemake作业。我的问题是我无法为每个启动的作业使用带有自定义名称的slurm的--output和--error选项。
例如,我在名为“ filtmap”的组中有两个规则(以便在同一作业实例中启动这两个规则)。 我试图按照documentation
所示设置集群配置这是config_cluster.json
{
"__default__":
{
"account": "mytilus",
"time": "10-00:00",
"nodes": 1,
"ntasks": 1,
"partition": "long",
"mem": 100,
"output": "logs/cluster/{rule}.{wildcards}.out",
"error": "logs/cluster/{rule}.{wildcards}.err"
},
}
并使用这些选项启动snakemake
snakemake --use-singularity \
--jobs 40 --cluster-config config_cluster.json \
-s Snakefile
--cluster "sbatch -A {cluster.account} -p {cluster.partition} \
--output {cluster.output} --error {cluster.error} \
-t {cluster.time} --error {cluster.error} \
--nodes {cluster.nodes} \
--ntasks {cluster.ntasks} --mem {cluster.mem}G \
-D /shared/projects/mytilus/Preprocessing \
--cpus-per-task {threads}"
但是无论我尝试使用什么通配符,这总是返回以下类型的错误
WorkflowError:
NameError with group job efafdfe8-225c-594b-a71a-d0d58516876c: The name 'rule' is unknown in this context. Please make sure that you defined that variable. Also note that braces not used for variable access have to be escaped by repeating them, i.e. {{print $1}}`
在调用和配置文件中删除所有对--output和--error标志的使用时,snakemake运行良好。但是我真的很想拥有带有自定义名称的输出和错误文件。
编辑: 经过几次测试后,似乎没有组定义时单独运行每个规则都不会出现问题。因此,我的问题正在转变为“如何在包含的规则之间使用通用通配符为每个组设置工作名称?”