簡體   English   中英

我可以在 nextflow 配置中使用多個 conda 環境嗎?

[英]Can I use multiple conda environments in the nextflow config?

我正在 Nextflow 中編寫一個管道,並希望使用多個不同的 conda(現有)環境來避免工具安裝中的不一致以及共享管道的特定模塊。 Nextflow 文檔 state,最佳實踐是在nextflow.config環境 - 請參閱此處。 . 但是,聲明只是process.conda並且似乎適用於所有進程而不是特定於進程。

我知道我可以在每個進程中指定一個現有的 conda 環境,但我正在努力遵守可移植性的最佳實踐。

由於我無法在網上找到有關此特定問題的任何文檔,因此我嘗試了配置文件中的以下聲明:

profiles {
    conda {
        process.conda = "something" // works but single env for all processes
        fastqc.conda = "something" // where fastqc is the name of the process - FAILS
        process.fastqc.conda = "something" // FAILS
    }
}

我也試過:

profiles {
    conda {
        process {
            withName: fastqc {
                 process.conda = "something"
            }
        }
    }
}

這也失敗並出現錯誤: unknown config attribute withName

有趣的是,

process {
        conda {
            withName: fastqc {
                 process.conda = "something"
            }
        }
    }

確實允許我為每個進程運行不同的 conda 環境,但不能通過-profile選項打開和關閉(因為指定配置文件塊會破壞它)。

不確定是否存在“最佳實踐”,但我認為通常的方法是創建一個單獨的 Conda 配置文件,並使用withNamewithLabel 進程選擇器來指定使用conda指令的環境。 例如, conf/conda.config的內容可能如下所示:

process {

    withLabel: 'fastqc' {
        conda = 'fastqc=0.11.8=1'
    }

    withName: 'cutadapt' {
        conda = 'cutadapt=2.10=py37h516909a_0'
    }
}

然后,在您的nextflow.config中,包含一個“conda”配置文件以包含上述配置文件並啟用 Conda 環境。 請注意,后者現在在 Nextflow 的較新版本中是必需的:

includeConfig 'conf/base.config'

profiles {

    'conda' {
        includeConfig 'conf/conda.config'
        conda.enabled = true
    }

在上面的示例中, conf/base.config將始終被應用,而不管配置文件如何,並且可能包含通常的cpus / memory / time指令和errorStrategy等。

我也找不到如何通過nextflow.config執行此操作。

我使用的解決方法是繼續將conda指令指令附加到每個process ,然后在nextflow.config中添加它:

profiles {
    conda {
        conda.enabled = true
    }
}

這樣您仍然可以在 CLI 上使用-profile標志關閉 conda-usage。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM