首页 > 解决方案 > 通过 Snakemake 创建文件时防止科学写作

问题描述

不确定是 Python 问题还是 Snakemake 问题,但我有这个目标:

SCORES = expand(expand(RESULTS_DIR + "/{{sp}}_{{st}}/{{seq}}/scores/{tf}_{th}.scores.tab", zip, tf=TF_NAME, th=TF_THR), sp=SPECIES, st=STRAINS, seq=SEQ)

其中 TF_THR 是浮点数列表。在某些情况下,输出文件是使用科学记数法编写的,我想防止这种情况发生。我试过这个:

th='{:.6f}'.format(TF_THR)

还有这个:

th=format(TF_THR, '0.6f'))

但在这两种情况下,我都会收到以下错误:

TypeError in line 44 of myworkflow.py:
unsupported format string passed to Series.__format__
  File "myworkflow.py", line 44, in <module>

感谢您的帮助!

标签: pythonpython-3.xsnakemake

解决方案


就像 Python 中的所有字符串一样,Expand 使用“格式 minilang ”。我不确定 Snakemake 的记录情况如何。

要解决您的问题,我们可以简单地执行以下操作:

TF_THR = [0.12345, 0.6789]
print(expand('{th:0.3f}', th=TF_THR))
# ['0.123', '0.679']

推荐阅读