我可以在Snakemake中将输出作为带有通配符的输入的目录吗?避开失败并强制执行规则顺序的工作

时间:2019-05-16 07:11:33

标签: snakemake

我有一个规则可以在多个样本上运行工具(有些失败),我使用-k选项来处理剩余的样本。但是,对于下一步,我需要检查第一个规则的输出并创建一个文本摘要文件。我无法在第一条规则之后执行下一条规则。

我尝试了各种方法,包括使用带有通配符的输出的规则fastQC_post。但是,如果我将其用作下一条规则的输入,那么我将没有一个输出文件。如果我在规则checkQC的输入中使用expand与{sample}一起作为启动时确定的所有样本的列表,则会中断,因为并非所有样本都成功地进入了fastQC阶段。

我真的只想能够在fastQC_post规则中创建post_fastqc_reports文件夹,并将其用作我的checkQC规则的输入。或者可以在fastQC_post完成后强制其运行checkQC,但是由于fastQC_post的某些作业失败,因此检查点再次不起作用。

我想要以下内容:(这不起作用,因为输出目录不使用通配符)

肯定有一种简单的方法可以强制执行规则顺序?

rule fastQC_post:
    """
    runs FastQC on the trimmed reads
    """
    input:
        projectDir+batch+"_trimmed_reads/{sample}_trimmed.fq.gz"
    output: directory(projectDir+batch+"post_fastqc_reports/")
    log:
        projectDir+"logs/{sample}_trimmed_fastqc.log"
    params:
        p = fastqcParams,
    shell:
        """
    /home/apps/pipelines/FastQC/CURRENT {params.p} -o {output} {input}
        """



rule checkQC:
    input: rules.parse_sampleFile.output[0],rules.parse_sampleFile.output[1], rules.parse_sampleFile.output[2], directory(projectDir+batch+"post_fastqc_reports/")

    output:
        projectDir+"summaries/"+batch+"_summary_tg.txt"
        , projectDir+"summaries/"+batch+"_listForFastqc.txt"
        , projectDir+"summaries/"+batch+"_trimmingResults.txt"
        , projectDir+"summaries/"+batch+"_summary_fq.txt"
    log:
        projectDir+"logs/"+stamp+"_checkQC.log"
    shell:
        """
        python python_scripts/fastqc_checks.py --input_file {log} --output {output[1]} {batchCmd}
        python python_scripts/trimGalore_checks.py --list_file {input[0]} --single {input[1]} --pair {input[2]} --log {log} --output {output[0]} --trimDir {trimDir} --sampleFile \
{input[3]} {batchCmd}
        """

使用以上命令,我得到一个错误,即并非所有输出和日志都包含与fastqc_post规则的输入相同的通配符。

我只希望能够在我的fastqc_post规则之后运行我的checkQC规则(与fastqc_post规则中的作业失败无关)

0 个答案:

没有答案