微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

snakemake:conda env 特定 smk 文件的相对路径,而不是执行路径即带有规则全部的 Snakefile

如何解决snakemake:conda env 特定 smk 文件的相对路径,而不是执行路径即带有规则全部的 Snakefile

我编写了一个 snakemake 工作流程,为了使代码更易于管理,我将规则拆分为单独的 smk 文件。我当前的目录结构如下所示:

|-- Snakefile # with statements like include: utils/align.smk 
|-- config.yaml
|-- envs
|   `-- vep.yml
`-- utils
    |-- align.smk
    |-- envs
    |   |-- alignment.yml
    |   |-- mutect2.yml
    |   |-- quality_check.yml
    |   `-- vep.yml
    |-- process_reads.smk
    `-- variant_calling.smk

我还编写了依赖 conda 的工作流,并指定了分离 yaml 文件的所有要求。现在,文件的位置在 config.yaml 中指定,例如:

CONDA_ALIGNMENT: "utils/envs/alignment.yml"

然后 align.smk 中的规则通过 conda: config['CONDA_ALIGNMENT'] 调用它们。

但是,现在我尝试运行 snakemake,出现以下错误

snakemake -np --profile cluster --jobs 2 --use-conda --force
Building DAG of jobs...
WorkflowError:
Failed to open source file /path/to/exec/utils/utils/envs/alignment.yml
FileNotFoundError: [Errno 2] No such file or directory: '/path/to/exec/utils/utils/envs/alignment.yml'
  File "/path/to/miniconda3/envs/snakemake/lib/python3.9/site-packages/snakemake/deployment/conda.py",line 228,in create
  File "/path/to/miniconda3/envs/snakemake/lib/python3.9/site-packages/snakemake/deployment/conda.py",line 98,in hash
  File "/path/to/miniconda3/envs/snakemake/lib/python3.9/site-packages/snakemake/deployment/conda.py",line 80,in content
  File "/path/to/miniconda3/envs/snakemake/lib/python3.9/site-packages/snakemake/deployment/conda.py",line 67,in _get_content

请注意,utils 目录在蛇形无法找到的文件路径中出现了两次。输入/参数/输出中的所有其他文件在相对于主 Snakefile 而不是特定的 smk 文件指定时工作。对于如何以更蛇形的方式处理此问题的任何建议,我将不胜感激。

我能想到的最快解决方法是将 smk 文件从 utils 中移出,但那样会非常混乱...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。