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

Snakemake使用--use-singularity时本地资源挂载及文件访问问题

Snakemake 容器挂载规则与常见场景解答

核心结论:Snakemake默认自动挂载的路径

  • 执行snakemake命令的工作流根目录,容器内的默认工作目录与该路径完全一致,路径无需做映射转换
  • 所有在规则的input/output/log/temp/protected字段中显式声明的文件对应的父目录
  • 执行snakemake时通过--singularity-args "-B 宿主机路径:容器内路径"参数手动指定的挂载路径

问题1:工作流内自定义Python脚本的访问方式

你不需要将myScript.py构建到容器中,也无需额外声明为输入文件:

  1. 只要该脚本存放在工作流根目录下,Snakemake会自动挂载该目录,容器内可直接访问
  2. 你当前规则中通过params.basePath拼接路径的写法冗余且容易出错,可直接使用相对路径调用,修改后的shell命令片段如下:
| python3 scripts/myScript.py \
--input /dev/stdin \
--prefix {wildcards.sample}

注意:该Python脚本依赖的第三方库需要提前内置到容器中,或配合conda环境在容器内安装。


问题2:大体积参考序列/数据库的使用方式

不需要将这类公共大文件内置到容器中,否则会导致容器镜像体积过大,启动、分发效率极低:

  1. 如果参考文件存放在当前工作流目录下,直接声明到规则的input字段即可,Snakemake会自动挂载对应路径
  2. 如果参考文件是多项目共用的公共资源,存放在工作流目录外,执行snakemake时添加参数手动挂载即可:
snakemake --use-singularity --singularity-args "-B /公共参考库根目录:/公共参考库根目录"

手动挂载时保持宿主机和容器内路径一致,原有代码中调用参考文件的路径不需要做任何修改。


路径定位通用规则

编写shell命令时,只要文件属于上述自动挂载/手动挂载的路径范围,直接使用和宿主机完全相同的相对路径或绝对路径调用即可,无需额外修改路径格式。

内容的提问来源于stack exchange,提问作者Brendan Kohrn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:57:02