如何更改snakemake中群集计划程序的日志文件命名?

2024-09-24 08:27:24 发布

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

我正在PBS TORQUE集群上运行作业,希望自定义规则repeated for many files的日志脚本

默认命名方案适用于每个规则snakejob.{rulename}.{id}.sh.o26730731的每个脚本,例如snakejob.all.7.sh.o26730731,其中只有不同文件的结尾不同(因为它们一个接一个地执行)。这来自snakemake为提交到集群而创建的脚本

我可以使用-e-o选项为qsub指定一个公共日志目录

我知道配置文件存在,或者可以使用通配符,比如(我必须测试):

snakemake --jobs 10 --cluster "qsub -o logs/{wildcards.file} -e logs/{wildcards.file}"

或者,可以更改snakemake在.snakemake/tmp<hash>下临时保存的脚本的命名,以实现每个文件日志的唯一命名

我试图在规则中设置日志目录,但当我指定目录(缺少.log)时,这不起作用:

rule target:
    input:
        # mockfile approach: https://stackoverflow.com/a/53751654/9684872
        # replace? https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#directories-as-outputs
        file = expand(os.path.join(config['DATADIR'], "{file}", "{file}.txt"), file=FILES)

rule execute:
    log: 
        #dir = os.path.join(config['DATADIR'], "{file}") # Building DAG is stuck in endless loop
        dir = os.path.join(config['DATADIR'], "{file}.log") # works
    params:
        logdir = os.path.join(config['DATADIR'], "{file}") #works

那么,您的方法是什么,或者您建议如何最好地解决这个问题,以使用{file}通配符标识日志


Tags: path目录脚本logconfigos规则sh