使用wrappers的Snakemake工作流是否要求集群节点具备互联网访问权限
问题原因
你的报错本质是计算节点无互联网权限,无法拉取远程snakemake wrapper对应的环境配置文件和依赖,完全可以通过预缓存资源的方式规避,不需要放弃使用snakemake wrappers,具体方案如下:
可行规避方案
方案1:提交节点预构建全部依赖环境
在有网络的提交节点执行以下命令,提前下载所有需要的wrapper脚本、conda依赖包并创建好对应环境:snakemake --conda-create-envs-only --cores 1所有资源会默认存储在工作流目录下的
.snakemake/文件夹中,只要该目录在集群共享存储上,无网络的计算节点后续执行任务时会直接读取本地缓存的资源,无需再发起联网请求。方案2:使用本地离线wrapper仓库
先在提交节点将对应版本的snakemake-wrappers仓库克隆到集群共享存储目录,之后修改工作流中所有wrapper的引用路径,将远程版本号替换为本地仓库的绝对路径即可,示例如下:
原引用写法:wrapper: "0.77.0/bio/cutadapt/se"替换为本地路径写法:
wrapper: "/shared/dir/snakemake-wrappers-0.77.0/bio/cutadapt/se"该方案完全不需要任何联网请求,适配严格离线的集群环境。
方案3:配置全局共享缓存目录
在集群全局环境变量中设置以下两个路径指向所有节点可访问的共享存储:SNAKEMAKE_WRAPPER_CACHE_DIR:snakemake wrapper的全局缓存目录CONDA_PKGS_DIRS:conda依赖包的全局缓存目录
首次运行时在提交节点执行一次预构建命令,后续所有工作流都可以直接读取全局缓存的资源,不需要重复下载。
结论
无互联网访问的集群环境不需要避免使用snakemake wrappers,只需要提前将需要的资源预下载到共享存储即可正常使用。
内容的提问来源于stack exchange,提问作者Lance
相关产品推荐
相关产品推荐

