我正在编写一个蛇形文件,它将对多个样本执行多个操作。验证本地计算机上运行的工作流程后,现在我正在集群上运行工作流程。
我的第二个规则是使用.bam
对bwa 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
)中安装工具的最佳方法吗?] >
我正在编写一个蛇形文件,它将对多个样本执行多个操作。验证本地计算机上运行的工作流之后,现在我正在......>
看看:https://snakemake.readthedocs.io/en/stable/snakefiles/deployment.html#integrated-package-management
您将必须为规则sort_bam
创建一个conda环境yaml,如下所示: