[英]Snakemake - How to set conda environment path
在 Snakemake 中,可以通過定義如下規則輕松設置 conda 環境conda: "envs/my_environment.yaml"
。 這樣,YAML 文件指定在運行管道之前要安裝哪些包。
某些軟件需要第三方軟件的路徑才能執行特定命令。
這方面的一個示例是使用 RSEM 生成參考索引時(來自 GitHub 頁面DeweyLab - RSEM的示例):
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
aligner 軟件的目錄(例如[workdir]/.snakemake/conda/STAR
),該軟件是通過 conda 在之前的規則中安裝的嗎?
目前,一種選擇可能是使用命令行界面選項創建一個共享環境文件夾: --conda-prefix
Snakemake docs - 命令行界面,但是由於這是一個單一案例問題,我更願意定義規則中的此信息。
我有兩種方法來處理這個問題。
僅當 STAR 不在 PATH 上時才需要指定該特定選項( --star-path
)。 但是,如果此規則的 YAML 中包含 STAR,則 Conda 會將其放在 PATH 作為環境激活的一部分,因此不需要該選項。 --bowtie-path
也是如此。 因此,對於這樣的規則,YAML 可能類似於:
name: rsem
channels:
- conda-forge
- bioconda
- defaults
dependencies:
- rsem
- star
- bowtie
根據此線程,請考慮將軟件包上的版本固定為次要版本(例如bowtie=1.3
)。
config.yaml
進行管道選項如果由於某種原因您不想要一個完全獨立的管道,例如,您的系統已經預裝了許多標准基因組學軟件,例如 STAR,那么您可以在config.yaml
中包含一個條目,用戶應該在其中調整管道以適應他們的系統。 例如,以下是相關部分:
config.yaml
star_path: /sw/STAR
bowtie_path: /sw/bowtie
蛇文件
configfile: config.yaml
## this is not a complete rule
rule rsem_prep_ref:
# needs input, output...
params:
star=config['star_path'],
bowtie=config['bowtie_path']
threads: 8
conda: "envs/myenv.yaml"
shell:
"""
rsem-prepare-reference --gtf mm9.gtf \
--star \
--star-path {params.star} \
-p {threads} \
--prep-pRSEM \
--bowtie-path {params.bowtie} \
--mappability-bigwig-file /data/mm9.bigWig \
/data/mm9 \
/ref/mouse_0
"""
實際上,您的管道假定的任何內容都已經存在並且不是由管道本身生成的,應該將 go 放入您的config.yaml
(例如mm9.gtf
或mm9.bigWig
)中。
一般來說,我建議不要嘗試共享環境。 但是,您仍然可以通過在用戶之間共享package 緩存並確保在同一文件系統上創建環境來節省空間(這使 Conda 可以使用硬鏈接而不是復制)。 您可以使用 Conda 配置選項pkgs_dirs
來設置 package 緩存位置。 如果管道本身已經與 Conda package 緩存在同一個文件系統上,我會讓 Snakemake 使用默認位置( .snakemake/conda
)而不是與--conda-prefix
參數混淆。
否則,您可以為 Snakemake 提供--conda-prefix
參數以指向同一文件系統上的目錄,在該目錄中創建 Conda 環境。 這應該是一個相當通用的目錄,管道的所有環境都位於其中。 OP ( [workdir]/.snakemake/conda/STAR
) 中提出的內容沒有意義。
我想為@merv 的答案添加第三個選項。 您可以使用which
動態計算路徑(假設它在您的系統上啟用):
rsem-prepare-reference --star-path $(which star) ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.