在(正确的)conda环境中将蛇形作业提交给集群

问题描述 投票:0回答:1

我正在编写一个蛇形文件,它将对多个样本执行多个操作。验证本地计算机上运行的工作流程后,现在我正在集群上运行工作流程。

我的第二个规则是使用.bambwa mem文件(samtools sort的输出)进行排序。

我的规则如下:

rule sort_bam:
    input:
        "aligned/{sample}.bam"
    output:
        protected("aligned/{sample}.sorted.bam")
    params:
        THREADS = config['sort_threads']
    shell:
        "samtools sort -T aligned/{wildcards.sample} "
        "-O bam {input} > {output}"

当我使用命令调用试运行时:

snakemake -np -s Snakefile_v4_ngs_bngs05b --cluster qsub -j 5

我获得规则sort_bam的以下命令:

[Tue Apr  7 17:39:26 2020]
rule sort_bam:
    input: aligned/NIPT-PearlPPlasma-7-PP1_S7.bam
    output: aligned/NIPT-PearlPPlasma-7-PP1_S7.sorted.bam
    jobid: 7
    wildcards: sample=NIPT-PearlPPlasma-7-PP1_S7

samtools sort -T aligned/NIPT-PearlPPlasma-7-PP1_S7 -O bam aligned/NIPT-PearlPPlasma-7-PP1_S7.bam > aligned/NIPT-PearlPPlasma-7-PP1_S7.sorted.bam

但是,当我调用snakemake(在正确的conda环境中进行的操作)以使用以下命令将此(以及随后的作业)提交给集群时:

snakemake -p -s Snakefile_v4_ngs_bngs05b --cluster qsub -j 5

几秒钟后我得到:

Error in rule sort_bam:
    jobid: 7
    output: aligned/NIPT-PearlPPlasma-7-PP1_S7.sorted.bam
    shell:
        samtools sort -T aligned/NIPT-PearlPPlasma-7-PP1_S7 -O bam aligned/NIPT-PearlPPlasma-7-PP1_S7.bam > aligned/NIPT-PearlPPlasma-7-PP1_S7.sorted.bam
        (one of the commands exited with non-zero exit code; note that snakemake uses bash strict mode!)
    cluster_jobid: Your job 381039 ("snakejob.sort_bam.7.sh") has been submitted

Error executing rule sort_bam on cluster (jobid: 7, external: Your job 381039 ("snakejob.sort_bam.7.sh") has been submitted, jobscript: /nexusb/nipt/200311_A00154_0454_AHHHKMDRXX/testMetrics/outSnakemake_ngs_bngs05b/.snakemake/tmp.ovnlc1ut/snakejob.sort_bam.7.sh). For error details see the cluster log and the log files of the involved rule(s)

这还不是全部。尽管我担心它与环境有关(我担心队列中的作业没有从正确的环境中调用samtools-samtools也安装在我要将作业提交到的群集节点上) ,而不是在任何conda环境中)。

我认为是这样,因为如果在终端上我调用了由空运行打印出的确切命令,即在正确的环境中调用了samtools sort -T aligned/NIPT-PearlPPlasma-7-PP1_S7 -O bam aligned/NIPT-PearlPPlasma-7-PP1_S7.bam > aligned/NIPT-PearlPPlasma-7-PP1_S7.sorted.bam,我将产生正确的输出。

[我的问题是,如果我从某个环境中使用--cluster标志调用snakemake,snakemake将使用安装在该环境中的工具(在这种情况下为samtools=1.9),否则将作业提交到该环境时将不会激活该工具。集群?

我遇到了this thread,据我所知,我应该使用--conda-prefix标志。虽然我得到

snakemake: error: argument --conda-prefix: expected one argument

通话时

snakemake --conda --conda-prefix /home/ngs/miniconda3/envs/NIPTlibPrep -np -s Snakefile_v4_ngs_bngs05b --cluster qsub -j 5

我是否缺少上面命令的任何细节或使用--conda-prefix标志,实际上不是指定我要在工作流中所有操作的特定环境(NIPTlibPrep)中安装工具的最佳方法吗?] >

我正在编写一个蛇形文件,它将对多个样本执行多个操作。验证本地计算机上运行的工作流之后,现在我正在......>

python python-3.x conda snakemake
1个回答
0
投票

看看:https://snakemake.readthedocs.io/en/stable/snakefiles/deployment.html#integrated-package-management

您将必须为规则sort_bam创建一个conda环境yaml,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.