我想做一个工作流,从远程服务器下载一些 FASTQ 文件的列表,检查 md5 并运行一些后处理,例如对齐。
我了解如何使用两个工作流程来实现这一点:
首先下载fastq文件列表文件,例如md5文件。
读取md5文件内容并在all规则中为所需的结果文件创建相应的目标。
我想在一个工作流程中做到这一点。下面不正确的工作流程显示了我想要实现的想法。
在all规则input:部分我不知道文件下载和解析{sample}之前的值md5
我尝试使用动态、检查点和子分支流,但未能达到预期的结果。至于dynamic我只为动态(“fastq/{sample}.fq.gz.md5”)输出实现了这个工作流程。
此外,我对不使用的解决方案感兴趣,dynamic因为它已被弃用。
rule all:
    input:
         "md5",
         "bams/{sample}.bam",
rule download_files_list:
    output: "md5"
    #shell: "wget {}".format(config["url_files_list"])
    run:
        # For testing instead of downloading:
        content = """
        bfe583337fd68b3  ID_001_1.fq.gz
        1636b6756daa65f  ID_001_2.fq.gz
        0428baf25307249  ID_002_1.fq.gz
        de33d81ba5bfa62  ID_002_2.fq.gz
        """.strip()
        with open(output[0], mode="w") as f:
            print(content, file=f)
rule fastq_md5_files:
    input: "md5"
    output: "fastq/{sample}.fq.gz.md5"
    shell: "mkdir -p fastq && awk '{{ …Run Code Online (Sandbox Code Playgroud)