gpt4 book ai didi

snakemake - 如何防止snakemake从失败的作业中删除输出文件夹?

转载 作者:行者123 更新时间:2023-12-03 06:51:23 26 4
gpt4 key购买 nike

我有一个规则,迭代文件提取 Fastq 文件路径并在 Fastq 文件上运行 trimGalore。然而,某些文件已损坏/被截断,因此trimGalore无法处理它们。它继续对剩余文件运行,但总体规则失败,并删除包含成功处理的文件的输出文件夹。如何保留输出文件夹?

我尝试更改 shell 命令以忽略退出状态,但 Snakemake 似乎在运行的 shell 元素内强制执行 set -euo pipefail

rule trimGalore:
"""
This module takes in the temporary file created by parse sampleFile rule and determines if libraries are single end or paired end.
The appropriate step for trimGalore is then ran and a summary of the runs is produced in summary_tg.txt
"""
input:
rules.parse_sampleFile.output[1]+"singleFile.txt", rules.parse_sampleFile.output[1]+"pairFile.txt"
output:
directory(projectDir+"/trimmed_reads/")
log:
projectDir+"/logs/"+stamp+"_trimGalore.log"
params:
p = trimGaloreParams
shell:
"""
(awk -F "," '{{print $2}}' {input[0]} |while read i; do echo $(date +"%Y-%m-%d %H:%M:%S") >>{log}; echo "$USER">>{log}; trim_galore {params.p} --gzip -o {output} $i; done
awk -F "," '{{print $2" "$3}}' {input[1]} |while read i; do echo $(date +"%Y-%m-%d %H:%M:%S") >>{log}; echo "$USER">>{log}; trim_galore --paired {params.p} --gzip -o {output} $i; done) 2>>{log}
"""

我很高兴它会在失败时继续处理剩余的 Fastq 文件,但我希望在作业完成并失败时保留规则输出文件夹。我想继续处理未截断的文件

最佳答案

目前,您的规则将整个目录视为输出,因此如果在此过程中出现任何错误,它将认为作业整体失败并丢弃输出(即您的整个文件夹)。

我能想到的解决方案与 this section of the Snakemake docs 有关。 ,以及作为输入的函数上它正下方的一个。

def myfunc(wildcards):
return [... a list of input files depending on given wildcards ...]

rule:
input: myfunc
output: "someoutput.{somewildcard}.txt"
shell: "..."

有了这个,您可以尝试迭代您的文件,snakemake 将为每个 Fastq 创建一个作业,因此,如果单个作业失败,则仅删除该输出文件。

免责声明:这是我刚刚学到的东西,还没有尝试过,但它对我也很有用!

关于snakemake - 如何防止snakemake从失败的作业中删除输出文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55419603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com