Snakefile ValueError: для распаковки требуется более 1 значения

Я запускаю змеиный файл в кластере, используя эту конфигурацию по умолчанию:

"__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  -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: требуется более 1 значения для распаковки python но я не мог понять.


person Medhat    schedule 13.12.2018    source источник


Ответы (1)


Я не могу проверить это прямо сейчас, но, основываясь на ошибке, я подозреваю, что проблема связана с тем, что ваш заполнитель JOBNAME не указан явно при вызове qsub.

Добавление -N some_name к вашим аргументам qsub должно решить эту проблему.

person JohnnyBD    schedule 13.12.2018
comment
Может быть, но в змеефайле содержится, скажем, 10 правил. почему не получается только с одним из них? - person Medhat; 13.12.2018
comment
Может быть? Не можешь проверить? Чтобы получить справку о том, почему происходит сбой с конкретным правилом, вы должны предоставить Snakefile или, по крайней мере, какие правила не работают/успешны, поскольку проблема может быть связана с вашими именами правил или подстановочными знаками. Кроме того, вы можете удалить либо JOBNAME, либо {rule}, либо {wildcards} и посмотреть, выйдет ли он из строя или нет, в зависимости от состава "name" : JOBNAME.{rule}.{wildcards}. Указание JOBNAME в команде qsub может исключить вероятность того, что ваш JOBNAME получит какое-то конфликтующее значение идентификатора узла. - person JohnnyBD; 13.12.2018
comment
Может быть, вы неверно истолковали. Может быть, это означает, что я согласен с тем, что это проблема, и я точно запускаю ее, но это займет некоторое время, кроме того, что я уже удалил {wildcards} and {rule}, но она выдала ошибку. обратная связь будет дана наверняка после запуска. Спасибо - person Medhat; 13.12.2018
comment
Добро пожаловать. Я думал, что вы имели в виду может быть как в я не могу это проверить, поэтому мы не будем сейчас. Я предположил, что вы не использовали локальные правила, но еще одна причина, по которой некоторые правила будут работать правильно, заключается в том, что у вас есть локальные правила, поскольку на них не будут влиять проблемы, связанные с qsub. - person JohnnyBD; 15.12.2018
comment
Еще раз спасибо, поэтому, если я запущу snakrmake с `JOBNAME.{rule}.{wildcards}`, он запишет stderr в snapjob.rulename.wildcardname.e/o. Если я нажму -N foo, он напишет в foo.e/o, и я потеряю информацию о правиле в имени файла. в любом случае я использовал то, что вы предложили, но это закончилось так же с данной ошибкой. спасибо - person Medhat; 17.12.2018