首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snakemake包装器中(bio)conda版本的最佳实践?

Snakemake包装器中(bio)conda版本的最佳实践?
EN

Stack Overflow用户
提问于 2020-10-29 15:22:35
回答 1查看 508关注 0票数 3

使用conda在Snakemake中指定包的最佳environment.yml实践是什么?据我所知,有关的渠道应该是:

代码语言:javascript
复制
channels:    
  - conda-forge
  - bioconda
  - base

但是,什么是指定包的好选择呢?我是否指定没有版本?全版?

使用全版本导致了以前使用无限/超长conda环境的问题。但是,没有固定版本就有可能间接升级到包的不兼容版本。

我是只指定直接依赖项,还是应该将conda env export的输出放在那里,以便冻结一切?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-29 15:43:26

对于包版本编号,我通常会选择固定主要和次要版本的。这样,用户在创建环境时将获得最新的安全补丁和bug修复,而不应以向后不兼容的方式更改(只要开发人员正确地遵循语义版本化)。

此外,我将只指定直接依赖项,并让环境解决程序处理任何隐式依赖项。这为满足不同软件包的不同需求提供了一定程度的自由,而通常包的配方应该指定对特定版本的任何限制。

另一种避免(未来)冲突和保持环境创建快速的方法是,将环境保持尽可能小且尽可能细化(见约翰下文的评论)。如果不同的规则只共享一些依赖关系,而不共享其他规则,我宁愿为每个规则创建单独的最小环境,也不愿重用更大的环境。Snakemake包装器无论如何都会这样做,因为每个包装器都有自己的环境定义。

正如约翰斯所指出的,同样适用于通道:只指定实际使用的通道,不再需要指定base通道。在使用mamba时,可以指定bioconda作为第一个通道。

谈到mamba:如果速度重要,我现在会使用 曼巴 来解决环境问题--它通常比conda快得多,并且更好地确保您获得最新版本的软件包。在snakemake中,您可以通过--conda-frontend mamba使用它,正如马滕对这个问题的评论中所指出的那样。

但是,当然,一切都取决于。如果您知道包的菜谱没有处理的版本不兼容,那么指定和固定隐式依赖项是必要的。如果您的软件创建了可以随修补程序版本更改的输出,那么您当然必须将补丁版本钉在脚上。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64594146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档