【发布时间】:2020-10-31 18:48:31
【问题描述】:
我在使用 Snakemake v5.26.1 时遇到问题,我不确定这是错误还是我做错了什么。
我有以下规则:
rule multiqc:
input:
expand('results/{project}/fastqc/{sample}/{sample}_R{idx}_fastqc.{ext}', project=PROJECT, sample=SAMPLES, idx=[1,2], ext=['html', 'zip'])
output:
html = 'results/{project}/fastqc/multiqc_report.html'
params:
out = lambda wildcards, output: os.path.dirname(output['html'])
conda:
'envs/multiqc.yaml'
shell:
'multiqc --force -o {params.out} {params.out}'
其中multiqc.yaml 是安装了multiqc 的conda 环境的规范。
当我使用例如snakemake --profile profiles/local/ 在本地执行管道时,一切都按预期工作。当我使用tibanna:snakemake --profile profiles/aws/在云上执行代码时也是如此。到目前为止,一切顺利。
上述规则非常轻量级,在本地执行它是有意义的,所以我在Snakefile 的某处有声明localrules: all, multiqc,这就是问题开始的地方。在这种情况下,当我在云中执行代码时,似乎multiqc.yaml 中定义的conda 环境没有自动安装或激活,我收到command 'multiqc' not found 错误。我目前用来绕过这个问题的hack是在本地安装multiqc,但是这个解决方案很丑陋,它影响了管道的可移植性。我怀疑我可以通过使用安装了multiqc 的singularity 图像来解决这个问题,但最优雅的解决方案仍然是以某种方式使规则的conda: 'envs/multiqc.yaml' 部分起作用。
上述行为是预期的还是错误(在我的代码或snakemake 中)?解决此问题的最佳解决方案是什么(可能使用singularity 图像)?
非常感谢。
【问题讨论】: