【发布时间】:2018-04-26 04:22:04
【问题描述】:
在下面的示例中,如果 shell 脚本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 命令在作业“完成”之前给它一个等待时间。但这是一个糟糕的解决方法,因为这可能会导致几个问题。
【问题讨论】: