gpt4 book ai didi

conda - Snakemake 包装器中(生物)conda 版本的最佳实践?

转载 作者:行者123 更新时间:2023-12-05 01:09:59 26 4
gpt4 key购买 nike

使用 conda 在 Snakemake 包装器中指定包的最佳 environment.yml 做法是什么?我了解 channel 应该是:

channels:    
- conda-forge
- bioconda
- base

但是,指定包的好选择是什么?我没有指定版本吗?完整版?

以前使用完整版导致使用无限/超长 conda 环境解析问题。但是,不固定版本会带来隐式升级到软件包不兼容版本的风险。

我是只指定直接依赖项还是应该将 conda env export 的输出放在那里,这样所有东西都被卡住了?

最佳答案

对于包版本数字,我通常会选择固定主要和次要版本。这样,用户在创建环境时将获得最新的安全补丁和错误修复,而不会以向后不兼容的方式进行任何更改(只要开发人员正确遵循 semantic versioning)。

另外,我会只指定直接依赖项,让环境求解器处理任何隐式依赖项。这提供了一定程度的自由来满足不同包的不同需求,而通常包的配方应指定对特定版本的任何限制。

另一种避免( future )冲突和快速创建环境的方法是使环境尽可能小且细化 (see Johannes' comment below)。如果不同的规则只共享一些依赖项而不共享其他依赖项,我宁愿为每个规则创建单独的最小环境,而不是重用更大的环境。无论如何,Snakemake 包装器都会这样做,因为每个包装器都有自己的环境定义。

As Johannes pointed out ,同样适用于 channel :只指定您实际使用的 channel ,不再需要指定base channel 。而在使用mamba时,可以指定bioconda为第一 channel 。

谈到mamba:如果速度很重要,我目前会使用mamba解决环境问题——它通常比 conda 快得多,并且更能确保您获得最新版本的软件包。在 snakemake 中,您可以通过 --conda-frontend mamba 使用它正如 Maarten's comment to the question 中也指出的那样.

但是,当然一切都取决于。如果您知道包的配方未处理的版本不兼容,则可能需要指定和固定隐式依赖项。如果您的软件可以创建可以随补丁版本更改的输出,那么您当然必须固定补丁版本。

关于conda - Snakemake 包装器中(生物)conda 版本的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64594146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com