这是我在我的一个蛇文件中使用的示例规则:
rule link_raw_data:
output:
OPJ(data_dir, "{lib}_{rep}.fastq.gz"),
params:
directory = data_dir,
shell_command = lib2data,
message:
"Making link to raw data {output}."
shell:
"""
(
cd {params.directory}
{params.shell_command}
)
"""
这可能与您的情况有点不同,但希望其中一些技术可以提供帮助。特别要注意节中的括号以及定义输出目录shell
的节的用法。params
我不确定我是否以最优雅的方式执行此操作,但它确实有效。
data_dir
是从配置文件中读取的参数。
lib2data
是一个根据某些通配符的值生成命令的函数。当然,我必须确保这些命令使用正确的输入文件路径(在这种情况下,输出也必须与该output
部分所说的一致)。在您的情况下,您可能只是有一个“硬编码”的 shell 命令,可能会使用一些规则的输入。
更精简的例子
rule run_script1:
input:
path/to/initial/input
output:
script1_out/output1
shell:
""""
cd script1_out
script1 {input}
""""
rule run_script2:
input:
script1/output1
output:
script2/output2
shell:
"""
cd script2_out
script2 {input}
"""
从这些示例开始,您可以在必要时在输入或输出中使用通配符的功能。