Python 3.x 使用qsub中的.e和.o文件作为snakemake中每个规则的日志
在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]
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删除日志文件(写入自己的副本)并导致调度器问题,但目前找不到详细信息。是的,我确实认为这是一种选择,但我想确保我在代码中没有丢失任何东西。