Snakemake:将命令行参数传递给脚本。

我正在使用Snakemake的一些python脚本来自动化工作流程。这些脚本使用的是命令行参数,虽然我可以将它们替换为 snakemake.input[0], snakemake.output[0]等,我不愿意这样做,因为我也希望能够在Snakemake之外使用它们。

解决这个问题的一个自然方法–也就是我一直在做的–是将它们作为一个 shell 而非 script. 然而,当我这样做时,依赖图被破坏了;我更新了我的脚本,但DAG不认为任何东西需要重新运行。

有没有一种方法可以将命令行参数传递给脚本,但仍然作为脚本运行?

编辑:一个例子

我的python脚本

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-o", type=str)
args = parser.parse_args()

with open(args.o, "w") as file:
    file.write("My file output")

我的蛇形档案

rule some_rule:
    output: "some_file_name.txt"
    shell: "python my_script.py -o {output}"

解决方案:

听起来你需要的是使用 argparse 在你的python脚本中。下面是一个例子,python脚本通过命令行接受参数。

  • Python脚本 example.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--infile", help="Filepath")
parser.add_argument("-o", "--outfile", help="Filepath")
args = parser.parse_args()

infilepath = args.infile
outfilepath = args.outfile
# blah blah code
  • 蛇形档案
rule xx:
input: "in.txt"
output: "out.txt"
shell: "python example.py -i {input} -o {output}"

PS – 当我懒惰的时候,我只用了 灭火 库而不是 argparse。Fire很容易用几行代码就把函数类暴露给命令行。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

观察测试失败信息

2022-4-22 2:00:10

解决方案

何时为春季启动执行指定多个配置文件

2022-4-22 2:00:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索