これは、私のスネークファイルの 1 つで使用するルールの例です。
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
セクションの内容と一貫した方法で出力も行います)。あなたの場合、おそらくルールの入力の一部を使用して、単に「ハードコードされた」シェルコマンドを使用する可能性があります。
より合理化された例
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}
"""
これらの例から始めて、必要に応じて入力または出力でワイルドカードの関数を使用できます。