我有一个规则可以在多个样本上运行工具(有些失败),我使用-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规则中的作业失败无关)