7

I am new to Snakemake and I want to write a very simple Snakefile with a rule that processes each input file separately to an output file, but somehow my wildcards aren't interpreted correctly.

I have set up a minimal, reproducible example environment in Ubuntu 18.04 with the input files "test/test1.txt", "test/test2.txt", and a Snakefile. (snakemake version 5.5.4)

Snakefile:

ins = glob_wildcards("test/{f}.txt")

rule all:
  input: expand("out/{f}.txt", f=ins)

rule test:
  input: "test/{f}.txt"
  output: "out/{f}.txt"
  shell: "touch {output}"

This Snakefile throws the following error while building the DAG of jobs:

Missing input files for rule test:
test/['test1', 'test2'].txt

Any ideas how to fix this error?

Bluescreen
  • 154
  • 2
  • 9

1 Answers1

7

I think you need to use ins.f or something similar:

expand("out/{f}.txt", f= ins.f)

The reason is explained in the FAQ

[glob_wildcards returns] a named tuple that contains a list of values for each wildcard.

dariober
  • 8,240
  • 3
  • 30
  • 47