1 | initial version |
To preserve wildcards while expanding a dictionary in Snakemake, you can use the expand
function with the wildcards
parameter. Here's an example:
rule example:
input:
"input/{sample}/file_{num}.txt"
output:
"output/{sample}/result_{num}.out"
params:
param_dict=lambda wildcards: {"sample": wildcards.sample, "num": wildcards.num}
shell:
"command --input {input} --output {output} --params {params}"
expanded_inputs = expand("input/{sample}/file_{num}.txt", sample=["A", "B"], num=[1, 2])
expanded_outputs = expand("output/{sample}/result_{num}.out", wildcards, sample=["A", "B"], num=[1, 2])
params_dict = {"sample": "{sample}", "num": "{num}"}
rule example:
input:
input=expanded_inputs
output:
output=expanded_outputs
params:
params_dict=params_dict
shell:
"command --input {input} --output {output} --params {params}"
In this example, we use the expand
function to generate the input and output file paths with wildcards. We then pass the wildcards
object into the expand
function for the output paths, which preserves the values of the wildcards. Finally, we use a params_dict
dictionary to pass the values of the sample
and num
wildcards as parameters to the shell command.