В приведенном ниже примере, если сценарий оболочки shell_script.sh
отправляет задание в кластер, возможно ли, чтобы программа Snakemake знала о завершении этого задания кластера?То есть, сначала файл a
должен быть создан с помощью shell_script.sh
, который отправляет свое собственное задание в кластер, а затем, как только это задание кластера будет завершено, должен быть создан файл b
.
Для простоты предположим, что snakemake запускается локально, что означает, что единственное кластерное задание происходит из shell_script.sh
, а не snakemake.
localrules: that_job
rule all:
input:
"output_from_shell_script.txt",
"file_after_cluster_job.txt"
rule that_job:
output:
a = "output_from_shell_script.txt",
b = "file_after_cluster_job.txt"
shell:
"""
shell_script.sh {output.a}
touch {output.b}
"""
PS - В данный момент яиспользуя команду sleep
, чтобы дать ему время ожидания, прежде чем задание будет «завершено».Но это ужасный обходной путь, поскольку это может привести к нескольким проблемам.