Python Snakemake-如何设置conda环境路径

Python Snakemake-如何设置conda环境路径,python,conda,environment,snakemake,Python,Conda,Environment,Snakemake,在Snakemake中,可以通过定义规则(如conda:“envs/my_environment.yaml”)轻松设置conda环境。通过这种方式,YAML文件指定在运行管道之前安装哪些软件包 某些软件需要第三方软件的路径来执行特定命令 这方面的一个例子是使用RSEM生成引用索引时(来自GitHub页面的例子): rsem-prepare-reference --gtf mm9.gtf \ --star \

在Snakemake中,可以通过定义规则(如
conda:“envs/my_environment.yaml”
)轻松设置conda环境。通过这种方式,YAML文件指定在运行管道之前安装哪些软件包

某些软件需要第三方软件的路径来执行特定命令

这方面的一个例子是使用RSEM生成引用索引时(来自GitHub页面的例子):

rsem-prepare-reference --gtf mm9.gtf \
                       --star \
                       --star-path /sw/STAR \
                       -p 8 \
                       --prep-pRSEM \
                       --bowtie-path /sw/bowtie \
                       --mappability-bigwig-file /data/mm9.bigWig \
                       /data/mm9 \
                       /ref/mouse_0
我是否可以找到或预定义
STAR
对准器软件的目录(例如
[workdir]/.snakemake/conda/STAR
),该软件在以前的规则中通过conda安装


目前,一个选项可能是使用命令行界面选项创建共享环境文件夹:
--conda prefix
,但是,由于这是一个单一的案例问题,我希望在规则中定义此信息。

我有两种处理方法

1:让Conda处理路径 只有当星形不在路径上时,才需要指定该特定选项(
--star path
)。然而,若此规则的YAML中包含STAR,那个么Conda将把它作为环境激活的一部分放在PATH上,所以不需要该选项。这同样适用于
——领结路径。因此,对于此类规则,YAML可能类似于:

名称:rsem
频道:
-康达锻造厂
-比奥康达
-默认值
依赖项:
-rsem
-明星
-领结

,考虑将包上的版本固定到一个次要版本(例如,<代码> BoTeY=1.3 )。< /P> 2:管道选项使用

config.yaml
如果出于某种原因,您不想要一个完全独立的管道,例如,您的系统已经预装了许多标准的基因组学软件,如STAR,那么您可以在
config.yaml
中包含一个条目,用户应在其中调整管道以适应其系统。例如,以下是相关部分:

config.yaml

star\u路径:/sw/star
领结路径:/sw/领结
蛇形文件

configfile:config.yaml
##这不是一条完整的规则
规则rsem_prep_ref:
#需要输入、输出。。。
参数:
star=config['star_path'],
蝴蝶结=配置['蝴蝶结路径']
线程:8
康达:“环境/myenv.yaml”
外壳:
"""
rsem准备参考——gtf mm9.gtf\
--明星\
--星路径{params.star}\
-p{threads}\
--准备pRSEM\
--领结路径{params.bowtie}\
--可映射性bigwig文件/data/mm9.bigwig\
/数据/毫米9\
/参考/鼠标\u 0
"""
实际上,管道假设已经存在并且不是由管道本身生成的任何内容都应该进入
config.yaml
(例如,
mm9.gtf
mm9.bigWig


关于共享环境的说明 一般来说,我建议不要尝试共享环境。但是,您仍然可以通过跨用户共享包缓存来节省空间,并确保在同一文件系统上创建环境(这允许Conda使用硬链接而不是复制)。您可以使用Conda配置选项设置包缓存位置。如果管道本身已经与Conda包缓存在同一个文件系统上,我只会让Snakemake使用默认位置(
.Snakemake/Conda
),而不会弄乱
--Conda prefix
参数


否则,您可以为Snakemake提供
--conda prefix
参数,以指向要在其中创建conda环境的同一文件系统上的目录。这应该是一个相当通用的目录,管道的所有环境都位于其中。OP(
[workdir]/.snakemake/conda/STAR
)中提出的建议毫无意义。

我有两种方法来处理这个问题

1:让Conda处理路径 只有当星形不在路径上时,才需要指定该特定选项(
--star path
)。然而,若此规则的YAML中包含STAR,那个么Conda将把它作为环境激活的一部分放在PATH上,所以不需要该选项。这同样适用于
——领结路径。因此,对于此类规则,YAML可能类似于:

名称:rsem
频道:
-康达锻造厂
-比奥康达
-默认值
依赖项:
-rsem
-明星
-领结

,考虑将包上的版本固定到一个次要版本(例如,<代码> BoTeY=1.3 )。< /P> 2:管道选项使用

config.yaml
如果出于某种原因,您不想要一个完全独立的管道,例如,您的系统已经预装了许多标准的基因组学软件,如STAR,那么您可以在
config.yaml
中包含一个条目,用户应在其中调整管道以适应其系统。例如,以下是相关部分:

config.yaml

star\u路径:/sw/star
领结路径:/sw/领结
蛇形文件

configfile:config.yaml
##这不是一条完整的规则
规则rsem_prep_ref:
#需要输入、输出。。。
参数:
star=config['star_path'],
蝴蝶结=配置['蝴蝶结路径']
线程:8
康达:“环境/myenv.yaml”
外壳:
"""
rsem准备参考——gtf mm9.gtf\
--明星\
--星路径{params.star}\
-p{threads}\
--准备pRSEM\
--领结路径{params.bowtie}\
--可映射性bigwig文件/data/mm9.bigwig\
/数据/毫米9\
/参考/鼠标\u 0
"""
实际上,管道假设已经存在并且不是由管道本身生成的任何内容都应该进入
config.yaml
(例如,
mm9.gtf
mm9.bigWig


关于共享环境的说明 一般来说,我建议不要尝试共享环境。但是,您仍然可以通过共享rsem-prepare-reference --star-path $(which star) ...