【问题标题】:Snakefile ValueError: need more than 1 value to unpackSnakefile ValueError:需要超过 1 个值才能解压
【发布时间】:2018-12-13 16:12:26
【问题描述】:

我正在使用此默认配置在集群上的蛇文件中运行:

"__default__":
    "account"   : "myAccount"
    "queue"     : "myQueue"
    "nCPUs"     : "16"
    "memory"    : 20000
    "resources" : "\"select[mem>20000] rusage[mem=20000] span[hosts=1]\""
    "name"      : "JOBNAME.{rule}.{wildcards}"
    "output"    : "{rule}.{wildcards}.out"
    "error"     : "{rule}.{wildcards}.err"
    "time"      : "24:00:00"

某些规则运行正常,但其中一条规则会引发此错误。

Traceback (most recent call last):
  File "home/conda3_64/lib/python3.5/site-packages/snakemake/__init__.py", line 537, in snakemake
    report=report)
  File "home/conda3_64/lib/python3.5/site-packages/snakemake/workflow.py", line 653, in execute
    success = scheduler.schedule()
  File "home/conda3_64/lib/python3.5/site-packages/snakemake/scheduler.py", line 286, in schedule
    self.run(job)
  File "home/conda3_64/lib/python3.5/site-packages/snakemake/scheduler.py", line 302, in run
    error_callback=self._error)
  File "home/conda3_64/lib/python3.5/site-packages/snakemake/executors.py", line 638, in run
    jobscript = self.get_jobscript(job)
  File "home/conda3_64/lib/python3.5/site-packages/snakemake/executors.py", line 496, in get_jobscript
    cluster=self.cluster_wildcards(job))
  File "home/conda3_64/lib/python3.5/site-packages/snakemake/executors.py", line 556, in cluster_wildcards
    return Wildcards(fromdict=self.cluster_params(job))
  File "home/conda3_64/lib/python3.5/site-packages/snakemake/executors.py", line 547, in cluster_params
    cluster.update(self.cluster_config.get(job.name, dict()))
ValueError: need more than 1 value to unpack

这就是我运行snakemake的方式;

snakemake  -j 20 --cluster-config ./config.yaml --cluster "qsub -A {cluster.account}  -l walltime={cluster.time} -q {cluster.queue} -l nodes=1:ppn={cluster.nCPUs},mem={cluster.memory}" -p

如果我在没有集群 snakemake 的情况下运行它,它只会正常运行。

类似的错误在这里ValueError: need more than 1 value to unpack python,但我无法理解。

【问题讨论】:

    标签: snakemake snakeyaml


    【解决方案1】:

    我现在无法对其进行测试,但根据错误,我怀疑问题似乎在于您的 JOBNAME 占位符未在调用 qsub 时明确指定。

    -N some_name 添加到您的qsub 参数应该可以解决它。

    【讨论】:

    • 可能是,但蛇文件包含假设 10 个规则。为什么只有其中一个失败?
    • 可能吗?你不能测试一下吗?要获得有关特定规则失败的原因的帮助,您应该提供 Snakefile 或至少哪些规则失败/成功,因为问题可能与您的规则或通配符名称有关。此外,您可以删除JOBNAME{rule}{wildcards} 并查看它是否失败,具体取决于"name" : JOBNAME.{rule}.{wildcards} 的组成。在 qsub 命令中指定 JOBNAME 可以消除您的 JOBNAME 获得一些冲突节点 ID 值的可能性。
    • 也许你误解了“可能是”这意味着我同意这是问题所在,并且可以肯定我正在运行它,但除了我已经删除 {wildcards} and {rule} 之外还需要一段时间,它仍然给出了错误.运行后肯定会给出反馈。谢谢
    • 不客气。我以为你的意思是可能,因为我无法测试它,所以我们现在不会。我假设您没有使用 localrules,但某些规则可以正确运行的另一个原因是如果您有 localrules,因为这些不会受到 qsub 相关问题的影响。
    • 再次感谢,所以如果我使用 ` "JOBNAME.{rule}.{wildcards}"` 运行 snakrmake,它会将标准错误写入 snakjob.rulename.wildcardname.e/o。如果我 ass -N foo 它将写入 foo.e/o 并且我将丢失有关文件名中规则的信息。无论如何,我使用了你的建议,但它以给定的错误以相同的方式结束。谢谢
    猜你喜欢
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多