我在snakemake
管道中运行FastQC和MultiQC:
rule fastqc:
input:
"reads/{sample}_trimmed.fq.gz"
output:
html="qc/fastqc/{sample}.html",
zip="qc/fastqc/{sample}_fastqc.zip" # the suffix _fastqc.zip is necessary for multiqc to find the file
params:
extra = "--quiet"
log:
"logs/fastqc/{sample}.log"
threads: config["resources"]["fastqc"]["cpu"]
resources:
runtime=config["resources"]["fastqc"]["time"]
wrapper:
"v1.31.1/bio/fastqc"
rule multiqc:
input:
expand("qc/fastqc/{sample}_fastqc.zip", sample=SAMPLES)
output:
report("qc/multiqc.html", caption="workflow/report/multiqc.rst", category="MultiQC analysis of fastq files")
params:
extra="", # Optional: extra parameters for multiqc.
use_input_files_only=True, # Optional, use only a.txt and don't search folder samtools_stats for files
resources:
runtime=config["resources"]["fastqc"]["time"]
log:
"logs/multiqc/multiqc.log"
wrapper:
"v1.31.1/bio/multiqc"
fastqc规则运行时没有任何问题,但multiqc失败:
Traceback (most recent call last):
File "/mnt/4TB_SSD/analyses/CRISPR/test/.snakemake/conda/db6c33339e73e6beea68618300022717_/bin/multiqc", line 6, in <module>
from multiqc.__main__ import run_multiqc
File "/mnt/4TB_SSD/analyses/CRISPR/test/.snakemake/conda/db6c33339e73e6beea68618300022717_/lib/python3.12/site-packages/multiqc/__init__.py", line 16, in <module>
from .multiqc import run
File "/mnt/4TB_SSD/analyses/CRISPR/test/.snakemake/conda/db6c33339e73e6beea68618300022717_/lib/python3.12/site-packages/multiqc/multiqc.py", line 30, in <module>
from .plots import table
File "/mnt/4TB_SSD/analyses/CRISPR/test/.snakemake/conda/db6c33339e73e6beea68618300022717_/lib/python3.12/site-packages/multiqc/plots/table.py", line 9, in <module>
from multiqc.plots import beeswarm, table_object
File "/mnt/4TB_SSD/analyses/CRISPR/test/.snakemake/conda/db6c33339e73e6beea68618300022717_/lib/python3.12/site-packages/multiqc/plots/beeswarm.py", line 8, in <module>
from multiqc.plots import table_object
File "/mnt/4TB_SSD/analyses/CRISPR/test/.snakemake/conda/db6c33339e73e6beea68618300022717_/lib/python3.12/site-packages/multiqc/plots/table_object.py", line 9, in <module>
from multiqc.utils import config, report
File "/mnt/4TB_SSD/analyses/CRISPR/test/.snakemake/conda/db6c33339e73e6beea68618300022717_/lib/python3.12/site-packages/multiqc/utils/report.py", line 18, in <module>
import lzstring
File "/mnt/4TB_SSD/analyses/CRISPR/test/.snakemake/conda/db6c33339e73e6beea68618300022717_/lib/python3.12/site-packages/lzstring/__init__.py", line 11, in <module>
from future import standard_library
File "/mnt/4TB_SSD/analyses/CRISPR/test/.snakemake/conda/db6c33339e73e6beea68618300022717_/lib/python3.12/site-packages/future/standard_library/__init__.py", line 65, in <module>
import imp
ModuleNotFoundError: No module named 'imp'
使用更高版本的 Package 器(v2.6.0)也会出现同样的错误。multiqc规则以前也有效,所以我不明白为什么突然找不到imp
。
为multiqc Package 器创建conda env的yaml文件:
channels:
- conda-forge
- bioconda
- nodefaults
dependencies:
- multiqc =1.16
快速的互联网搜索告诉我,"The imp module includes functions that expose part of the underlying implementation of Python’s import mechanism for loading code in packages and modules",在我看来已经是Python的一部分?
1条答案
按热度按时间ffx8fchx1#
imp
模块是deprecated in favor of importlib, and removed from the standard library since python version 3.12.0。因此,根据您的program-call/conda-environment使用的python版本,您将遇到ModuleNotFoundError
错误。一个快速的解决方法可以是简单地在<3.12.0的版本上修复所使用的Python。
我是这样做的:
multiqc_env.yaml
multiqc.smk
在我的例子中,Conda安装了一个python
version=3.11.6
,这使得MultiQC再次运行。希望这对你有帮助:)