snakemake случайным образом идентифицирует выходные данные как неполные

#snakemake

Вопрос:

У меня возникли некоторые проблемы с рабочим процессом создания змеи, который я разработал. Для определенного правила вывод иногда определяется snakemake как неполный:

 IncompleteFilesException:
The files below seem to be incomplete. If you are sure that certain files are not incomplete, mark them as complete with

    snakemake --cleanup-metadata <filenames>

To re-generate the files rerun your command with the --rerun-incomplete flag.
Incomplete files:
 

Это правило выполняется несколько раз (с разными значениями подстановочных знаков), и только некоторые из них завершаются с этой ошибкой. Интересно, что если я повторю рабочий процесс с нуля, те же самые задания будут выполнены без ошибок, и другие могут привести к этому. Кроме того, я вручную проверил вывод и не вижу в нем ничего плохого. Я могу возобновить рабочий процесс без проблем.
Я знаю об --ignore-incomplete обходном пути, но мне все еще любопытно, почему это может произойти? Как snakemake принимает решение о неполном выводе? Я также должен упомянуть, что задания выполняются в системе PBS HPC — не уверен, связано ли это.

Ответ №1:

Неполный в этом контексте, вероятно, означает, что задание было выполнено не так, как должно было быть, поэтому Snakemake не может гарантировать, что результат будет таким, каким он должен быть. Если ваше правило выдает вывод, но затем терпит неудачу, Snakemake все равно пометит вывод как неполный.

Я посмотрел в исходном коде, когда IncompleteFilesException он был поднят. Snakemake, похоже, помечает файлы как завершенные при persistence.finished() вызове, см. Код здесь.

И finished() называется postprocess() тем, что снова называется рядом мест. Не зная Змеиного Змея наизнанку, кажется, трудно понять, в чем заключается проблема. Каким-то образом Снейкмейк должен думать, что работа не была выполнена должным образом.

Я бы заглянул в журналы пробегов Змеиных змей. Возможно, некоторые задания провалятся.