我在Snakemake v5.26.1上有问题,我不确定这是bug还是做错了事。
我有以下规则:
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
是安装了conda
的{{1}}环境的规范。
例如,当我使用multiqc
在本地执行管道时,一切都会按预期进行。当我使用snakemake --profile profiles/local/
:tibanna
在云上执行代码时,情况也是如此。到目前为止,一切都很好。
以上规则非常轻巧,在本地执行它很有意义,因此我在snakemake --profile profiles/aws/
的某处有声明localrules: all, multiqc
,这就是问题开始的地方。在这种情况下,当我在云中执行代码时,似乎Snakefile
中定义的conda
环境没有自动安装或激活,并且出现了multiqc.yaml
错误。我目前用来绕过此问题的技巧是在本地安装command 'multiqc' not found
,但此解决方案很难看,并且会影响管道的可移植性。我怀疑我可以通过使用安装了multiqc
的{{1}}映像来解决问题,但是最优雅的解决方案还是以某种方式使singularity
成为规则的一部分。
上述行为是预期的还是错误(在我的代码或multiqc
中)?解决此问题的最佳解决方案是什么(也许使用conda: 'envs/multiqc.yaml'
图像)?
非常感谢。
答案 0 :(得分:1)
一些想法:
要激活conda环境,您需要在snakemake中添加选项--use-conda
,即snakemake --use-conda ...
您真的需要在自己的conda环境中执行multiqc吗?如果您可以在本地安装和运行multiqc而不与其他snakemake规则冲突,那么我怀疑您不需要专用的环境。
如果上述所有方法均失败,我宁愿将multiqc作为群集的一项工作而不是作为本地规则来运行,以避免出现您提到的复杂解决方案。