snakemake - 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。如果这导致了问题,请告诉我。
解决方案
推荐阅读
- android - 如何使用按钮停止在 Kotlin 中执行 FixedRateTimer()?
- vue.js - Vue-循环和事件处理程序的最佳实践
- python - 在 Python 中下载 Kaggle 文件
- ios - xcode中的Thread Sanitizer给出错误错误
- pyspark - 如何解析 datetime.datetime(,,,tzinfo) 以触发数据帧
- android - Android:如何在设备处于睡眠模式时处理硬件按钮事件(具有 root 访问权限)
- python - Python:为数据框中的每一列获取对数差异
- oauth - 如何使用 Azure Active Directory、应用注册和企业应用程序保护 API
- css - window.pageYOffset 不适用于“高度:100%”
- sql - 插入后用主键更新表列(在一个语句中)