Snakefile 只执行一个 job/rule

Snakefile executes only one job/rule

snakefile 包含两个作业 - 一个下载基因组,另一个使用 bowtie2 构建 来自生成的 .fa 文件的 bowtie2 索引。代码如下:

rule reference_genome_download:
    output:
      "reference_genome/ref_genome.fna"
    shell:
      """
      gca="GCA_000372685.2"
      datasets download genome accession $gca --exclude-gff3 --exclude-protein --exclude-rna
      unzip ncbi_dataset.zip
      cat $(ls ncbi_dataset/data/$gca/chr*) > {output}
      rm -r ncbi_dataset
      rm README.md
      rm ncbi_dataset.zip
      """
rule build_bowtie_index:
    input:
      "reference_genome/ref_genome.fna"
    output:
      "reference_genome/btbuild.log"
    shell:
      "bowtie2-build {input} reference_genome/ref_genome_btindex > {output}"

当我用 snakemake -n -c 10 干燥 运行 时,我得到以下信息:

Building DAG of jobs...
Job stats:
job                          count    min threads    max threads
-------------------------  -------  -------------  -------------
reference_genome_download        1              1              1
total                            1              1              1


[Fri Jan 28 12:54:25 2022]
rule reference_genome_download:
    output: reference_genome/ref_genome.fna
    jobid: 0
    resources: tmpdir=/tmp

规则 build_bowtie_index 甚至没有作为工作选项出现。我如何让两者达到 link?

使用 snakemake,我发现根据 我最终想要什么 来思考比根据一系列作业来思考更有用。 Snakemake 查看第一个规则来确定用户想要生成的内容,然后使用以下规则生成该输出。

在你的情况下,第一条规则应该是这样的:

rule all:
    input:
      "reference_genome/btbuild.log",

意思是最后你想要reference_genome/btbuild.log。 Snakemake 会计算出要生成 reference_genome/btbuild.log 它需要先 运行 reference_genome_download 然后 build_bowtie_index。事实上,第一个规则之后的规则顺序无关紧要,snakemake 会自行将它们按正确的顺序组合起来。