¿Cómo seleccionar todos los archivos de una muestra?

Tengo un problema para descubrir cómo hacer que la directiva de entrada solo seleccione todos{samples} archivos en la siguiente regla.

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"

Actualmente creará archivos de salida con nombre correcto, pero selecciona todos los archivos que coinciden con el patrón en función de todos los comodines. Entonces tal vez estoy a medio camino. Traté de cambiar{samples} a{{samples}} en la directiva de entrada como tal:

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

pero esto rompió la regla anterior de alguna manera. Entonces la solución es algo así como

input:
     "{sample}_*.bam"

Pero claramente esto no funciona. ¿Es posible recopilar todos los archivos que coinciden con{sample}_*.bam con una función y usar eso como entrada? Y si es así, ¿funcionará la función con$(echo ' {input}' etc...) en la directiva de shell?

Respuestas a la pregunta(2)

Su respuesta a la pregunta