首页 > 解决方案 > snakemake --show-failed-logs 如何工作

问题描述

我想使用带有--show-failed-logs参数的snakemake,但不确定它是如何工作的或期望什么。

例如(不是一个工作示例,我只是键入并复制了一些代码部分,如有必要,我可以创建一个工作示例)

我的命令是:

snakemake -s Snakefile_test.smk --configfile test.yml -j 4 --restart-times 2 --show-failed-logs

在 Snakefile_test.smk 我有一个规则:

rule testrule:
    input:
        R1_trimmed = rules.trim.output.R1_trimmed,
        R2_trimmed = rules.trim.output.R2_trimmed
    output:
        plot_R1 = output+"/{sample}/figures/{sample}_R1_plot.png",
        plot_R2 = output+"/{sample}/figures/{sample}_R2_plot.png",
    log:
        testrule_log = output+"/{sample}/logs/plot_log.txt"
    run:
        shell("python scripts/createplot.py -r1_trimmed {input.R1_trimmed} -r2_trimmed {input.R2_trimmed} -plot_r1 {output.plot_R1} -plot_r2 {output.plot_R2} -log {log.testrule_log}")

在 createplot.py 中进行测试我有类似的东西:

if __name__ == "__main__":
    logging.basicConfig(filename=args.log, level=logging.DEBUG, format='%(asctime)s %(levelname)s %(name)s %(message)s')
    logger=logging.getLogger(__name__)
    #to add some content to the log file
    try:
        1/0
    except ZeroDivisionError as err:
        logger.error(err)
    main()
    #to let the script crash
    a = 1/0

因为很明显 createplot.py 会导致管道崩溃,所以我预计snakemake会将内容打印testrule_log到屏幕上。但事实并非如此。我正在使用版本 5.25.0

编辑:

我熟悉

    script:
        "scripts/createplot.py"

但是在这种情况下需要使用shell。如果这导致了问题,请告诉我。

标签: snakemake

解决方案


推荐阅读