Como selecionar todos os arquivos de uma amostr

Eu tenho um problema em descobrir como fazer a diretiva de entrada selecionar apenas todos os{samples}rquivos na regra abaix

rule MarkDup:
    input:
        expand("Outputs/MergeBamAlignment/{samples}_{lanes}_{flowcells}.merged.bam", zip,
            samples=samples['sample'],
            lanes=samples['lane'],
            flowcells=samples['flowcell']),
    output:
        bam = "Outputs/MarkDuplicates/{samples}_markedDuplicates.bam",
        metrics = "Outputs/MarkDuplicates/{samples}_markedDuplicates.metrics",
    shell:
        "gatk --java-options -Djava.io.tempdir=`pwd`/tmp \
        MarkDuplicates \
        $(echo ' {input}' | sed 's/ / --INPUT /g') \
        -O {output.bam} \
        --VALIDATION_STRINGENCY LENIENT \
        --METRICS_FILE {output.metrics} \
        --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 200000 \
        --CREATE_INDEX true \
        --TMP_DIR Outputs/MarkDuplicates/tmp"

Atualmente, ele cria arquivos de saída nomeados corretamente, mas seleciona todos os arquivos que correspondem ao padrão com base em todos os curingas. Então talvez eu esteja no meio do caminho. Eu tentei mudar{samples} para{{samples}} na diretiva de entrada como tal:

expand("Outputs/MergeBamAlignment/{{samples}}_{lanes}_{flowcells}.merged.bam", zip,
            lanes=samples['lane'],
            flowcells=samples['flowcell']),`

mas isso quebrou a regra anterior de alguma forma. Portanto, a solução é algo como

input:
     "{sample}_*.bam"

Mas claramente isso não funciona. É possível coletar todos os arquivos que correspondem a{sample}_*.bam com uma função e usar isso como entrada? E se sim, a função ainda funcionará com$(echo ' {input}' etc...) na diretiva shell?

questionAnswers(2)

yourAnswerToTheQuestion