You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行Snakemake时显式传入输入输出文件夹路径参数?

Snakemake命令行动态传入输入输出路径的解决方案

Snakemake会自行解析所有命令行参数,位置参数默认被识别为待生成的目标文件,而非用户自定义参数,因此直接调用sys.argv会和Snakemake自身的参数解析逻辑冲突,无法正常工作。你可以通过Snakemake内置的--config参数实现自定义变量的动态传递,具体实现如下:

步骤1:修改trial.snakemake文件的变量定义

在Snakemake文件开头将写死的输入输出路径替换为从内置config字典取值的形式,可保留默认值方便本地调试:

# 优先读取命令行传入的参数,未传时使用默认路径
INPUT_DIR = config.get("input_dir", "/tmp/default_input")
OUTPUT_DIR = config.get("output_dir", "/tmp/default_output")

# 后续所有规则直接调用INPUT_DIR、OUTPUT_DIR变量即可,无需修改其他逻辑

config是Snakemake内置的全局字典,专门用于存储用户传入的自定义配置参数。

步骤2:修改Shell循环中的Snakemake调用语句

将路径参数通过--config以键值对的形式传入即可,修改后的Shell代码如下(注意修正你原代码中fodlerName的拼写错误):

for folder in /path/to/*_Samples
do
  folderName=$(basename $folder _Samples)
  mkdir -p /path/to/output/$folderName
  for files in $folder/*.gz
  do
    # 原有处理逻辑保留
    do something
  done
  # 通过--config传递自定义参数
  snakemake --cores 30 -s trial.snakemake \
    --config input_dir=/path/to/output/$folderName output_dir=/path/to/output2/
done

注意事项

如果传入的路径包含空格或特殊字符,需要给路径加引号包裹:
--config input_dir="/path/with space/input"

如果需要传递的参数较多,也可以将参数写入YAML配置文件,通过--configfile your_config.yaml的形式批量传入。


内容的提问来源于stack exchange,提问作者Nikhil Panchal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:45:04