Python 3.x 使用qsub中的.e和.o文件作为snakemake中每个规则的日志

Python 3.x 使用qsub中的.e和.o文件作为snakemake中每个规则的日志,python-3.x,snakemake,Python 3.x,Snakemake,在snakemake工作流中,我试图将qsub生成的.e和.o文件重定向到每个规则的log指令。下面是我拥有的一个规则示例,包括log指令。为了清楚起见,此规则生成(临时)输出[snakemakeWorkDir]/{sample}/aligned/{sample}.bam,而我也希望获得这些文件 [snakemakeWorkDir]/{sample}/aligned/log/{wildcards.sample}.{rule}.{jobid}.e[0-9]+和 [snakemakeWorkDir]

在snakemake工作流中,我试图将
qsub
生成的
.e
.o
文件重定向到每个规则的
log
指令。下面是我拥有的一个规则示例,包括
log
指令。为了清楚起见,此规则生成(临时)输出
[snakemakeWorkDir]/{sample}/aligned/{sample}.bam
,而我也希望获得这些文件

  • [snakemakeWorkDir]/{sample}/aligned/log/{wildcards.sample}.{rule}.{jobid}.e[0-9]+
  • [snakemakeWorkDir]/{sample}/aligned/log/{wildcards.sample}.{rule}.{jobid}.o[0-9]+
  • 产生

    rule bwa_map: 
        input:
            R1 = FQDIR + "{sample}_R1_001.fastq.gz",
            R2 = FQDIR + "{sample}_R2_001.fastq.gz",
            REF = config['ref']    
        output:
            # wrap output in temp
            temp("{sample}/aligned/{sample}.bam")
        conda:
            "envs/NIPTlibPrep.yaml"
        log:
            directory("{sample}/aligned/log")
        shell:
            "mkdir -p {log} | bwa mem {input.REF} {input.R1} {input.R2} "
            "| samtools view -Sb - > {output}"
    
    我用于将snakemake作业提交到集群的命令是:

    snakemake -p -s Snakefile_v5_ngs_bngs05b --cluster "qsub -q onlybngs05b -e {log} -o {
    log}" -j 5 --use-conda --jobname "{wildcards.sample}.{rule}.{jobid}"
    
    当我使用上面的命令调用snakemake时,我的作业在队列上获得状态
    Eqw
    ,并显示以下错误消息

     04/10/2020 10:37:30 [2003:28804]: error: can't open output file "/home/ngs/NIPT-PearlPPlasma-03-PPx_S3downSample/fastQC/log": No such file or directory
    
    尽管
    shell
    指令的第一个命令是创建
    log
    目录(我第一次尝试时没有使用
    mkdir-p
    命令,但得到了相同的错误。)


    另一种选择是完全忽略这些文件的生成,并使用“经典”的蛇形方法生成日志文件(例如,使用
    2>
    管道)

    我认为问题是在规则代码运行之前打开了日志文件。在运行snakemake之前,您需要创建日志输出目录。我模糊地记得SnaMeMak删除日志文件(写入自己的副本)并导致调度器问题,但目前找不到详细信息。是的,我确实认为这是一种选择,但我想确保我在代码中没有丢失任何东西。