修改日志文件的名称以包含jobid

2024-06-01 09:01:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将规则名、通配符和外部作业id包含到管道的日志文件名中,以使调试过程更加顺利(例如:snakejob.<rulename>.<wildcard>.e<jobid>)。我找不到合并规则名称或作业id的方法。默认日志文件名包含作业id,因此我认为一定有方法可以做到这一点。 下面是我的蛇形文件中的一个规则示例:

rule index_input:
    input:
        vcf = "{region}/example.vcf"
    output: "{region}/example.vcf.tbi"
    resources:
        mem = 2,
    threads:1,
    log:
        logo = "log/{region}.o",
        loge = "log/{region}.e",
    shell:
        """
        tabix {input.vcf}
        """

下面是我的执行文件的一个示例:

snakemake --ri \
        -s $SNAKEFILE \
        --drmaa " -l h_rt=24:00:00  \
                -l mfree={resources.mem}G \
                -l gpfsstate=0 \
                -pe serial {threads} \
                -V -cwd \
                -o {log.logo} \
                -e {log.loge} \
                -S /bin/bash" \
        --jobs $JOBNUM \
        --latency-wait $WAITTIME \
        --restart-times $RETRY \
        $1 $2 

我有没有办法在我的蛇形档案里做这样的事

log:
        logo = "log/{rulename}{region}.o{jobid}"

或者在执行文件中类似的东西“

-o {jobname}{log.logo}.o{jobid}

Tags: 文件方法logid示例input文件名规则
0条回答
网友
1楼 · 发布于 2024-06-01 09:01:02

我认为要包含规则名,可以使用通配符{rule}。对于特定的通配符,可以使用params指令。例如:

rule one:
    input:
        ...
    output:
        '{region}.txt',
    params:
        jobname= '{region}',
    shell:
        ...

然后执行为:

snakemake  cluster "qsub -o log/{rule}.{params.jobname}.o{jobid}"

当然,其作业提交到集群的每个规则都必须将jobname作为params的项包含。你知道吗

(未测试)

相关问题 更多 >