【问题标题】:snakemake log files for failed jobs on slurm don't existslurm上失败作业的snakemake日志文件不存在
【发布时间】:2019-10-28 20:17:01
【问题描述】:

我在 slurm HPC 上运行蛇形管道。有时,作业会因超出挂墙时间或内存而失败。此类失败的作业不会创建日志文件,或者它们的日志文件会作为 snakemakes 自动删除与失败作业关联的文件的一部分而被删除。获取失败作业的日志信息会很方便,这样我就可以更容易地理解作业失败的原因。

我目前有每个作业的日志参数,然后 cluster.json 文件专门为每个作业调用这些日志。一般规则,它的 cluster.json 调用和我的 snakemake 调用如下所示。

rule fastqScreen:
    input:
        Fast1="{sample}/{sample}.R1.fq.gz",
        Fast2="{sample}/{sample}.R2.fq.gz"
    output:
        output1="{sample}/{sample}.fq.gz",
        output2="{sample}/{sample}_screen.png",
        output3="{sample}/{sample}_screen.txt"
    log: "logs/{sample}FastScreen.log"
    params: 
        outprefix = "{sample}"
    threads: 4
    priority: 3
    shell:
        """
        cat {input.Fast1} {input.Fast2} > {output.output1} && /home/manninm/Programs/fastq_screen_v0.14.0/fastq_screen --aligner bowtie2 --quiet --force --threads {threads} {output.output1}
        """
"__default__": {
        "account": "kretzler",
        "job-name": "17_{rule}",
        "partition": "standard",
        "nodes": "1",
        "time": "10:00:00",
        "ntasks-per-node": "1",
        "cpus-per-task": "1",
        "mem": "4g",
        "output": "{log}.out.txt",
        "error": "{log}.err.txt",
        "mail-user": "$USER@umich.edu",
        "mail-type": "ALL"
    },
"HtSeq_Count": {
        "cpus-per-task": "{threads}",
        "--mem": "16g",
        "time": "8:00:00",
        "output": "{log}.out.txt",
        "error": "{log}.error.log"
    },
snakemake -j 1000 --restart-times 2 --max-jobs-per-second 5 --max-status-checks-per-second 5 --cluster-config cluster.json --cluster 'sbatch --job-name {cluster.job-name} --nodes {cluster.nodes} --ntasks-per-node {cluster.ntasks-per-node} --cpus-per-task {cluster.cpus-per-task} --mem {cluster.mem} --partition {cluster.partition} --time {cluster.time} --mail-user {cluster.mail-user} --mail-type {cluster.mail-type} --error {cluster.error} --output {cluster.output}'

我想将作业失败的错误或原因打印到与每个作业关联的 error.log 文件中,如果可能的话,我不明白我做错了什么导致失败作业的日志文件消失。

【问题讨论】:

    标签: slurm snakemake logfile


    【解决方案1】:

    需要将命令的输出定向到日志中

    shell:
        """
        cat {input.Fast1} {input.Fast2} 1> {output.output1} 2> {log} && \ 
        /home/manninm/Programs/fastq_screen_v0.14.0/fastq_screen --aligner bowtie2 --quiet --force --threads {threads} {output.output1} > {log}
        """
    

    查看here 了解有关重定向的更多信息。

    顺便说一句,slurm 还会在您执行 snakemake 的文件夹中的 slurm-[job-id].out 文件中捕获 stdout/stderr。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-25
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      相关资源
      最近更新 更多