【发布时间】:2021-10-30 00:14:28
【问题描述】:
我正在努力在我们大学的 HPC 上实施蛇形管道。我在激活的 conda 环境中这样做,并使用 sbatch 提交以下脚本:
snakemake --dryrun --summary --jobs 100 --use-conda -p \
--configfile config.yaml --cluster-config cluster.yaml \
--profile /path/to/conda/env --cluster "sbatch --parsable \
--qos=unlim --partition={cluster.queue} \
--job-name=username.{rule}.{wildcards} --mem={cluster.mem}gb \
--time={cluster.time} --ntasks={cluster.threads} \
--nodes={cluster.nodes}"
config.yaml
metaG_accession: PRJNA766694
metaG_ena_table: /home/etucker5/miniconda3/envs/s-niv-MAGs/data/input/ENA_tables/PRJNA766694_metaG_wenv.txt
inputDIR: /home/etucker5/miniconda3/envs/s-niv-MAGs/data/input
outputDIR: /home/etucker5/miniconda3/envs/s-niv-MAGs/data/output
scratch: /home/etucker5/miniconda3/envs/s-niv-MAGs/data/scratch
adapters: /home/etucker5/miniconda3/envs/s-niv-MAGs/data/input/adapters/illumina-adapters.fa
metaG_sample_list: /home/etucker5/miniconda3/envs/s-niv-MAGs/data/input/SampleList_ForAssembly_metaG.txt
megahit_other: --continue --k-list 29,39,59,79,99,119
megahit_cpu: 80
megahit_min_contig: 1000
megahit_mem: 0.95
restart-times: 0
max-jobs-per-second: 1
max-status-checks-per-secon: 10
local-cores: 1
rerun-incomplete: true
keep-going: true
蛇文件
configfile: "config.yaml"
import io
import os
import pandas as pd
import numpy as np
import pathlib
from snakemake.exceptions import print_exception, WorkflowError
#----SET VARIABLES----#
METAG_ACCESSION = config["metaG_accession"]
METAG_SAMPLES = pd.read_table(config["metaG_ena_table"])
INPUTDIR = config["inputDIR"]
ADAPTERS = config["adapters"]
SCRATCHDIR = config["scratch"]
OUTPUTDIR = config["outputDIR"]
METAG_SAMPLELIST = pd.read_table(config["metaG_sample_list"], index_col="Assembly_group")
METAG_ASSEMBLYGROUP = list(METAG_SAMPLELIST.index)
ASSEMBLYGROUP = METAG_ASSEMBLYGROUP
#----COMPUTE VAR----#
MEGAHIT_CPU = config["megahit_cpu"]
MEGAHIT_MIN_CONTIG = config["megahit_min_contig"]
MEGAHIT_MEM = config["megahit_mem"]
MEGAHIT_OTHER = config["megahit_other"]
和slurm错误输出
snakemake: error: unrecognized arguments: --metaG_accession=PRJNA766694
--metaG_ena_table=/home/etucker5/miniconda3/envs/s-niv-MAGs/data/input/ENA_tables/PRJNA766694_metaG_wenv.txt
--inputDIR=/home/etucker5/miniconda3/envs/s-niv-MAGs/data/input
--outputDIR=/home/etucker5/miniconda3/envs/s-niv-MAGs/data/output
--scratch=/home/etucker5/miniconda3/envs/s-niv-MAGs/data/scratch
--adapters=/home/etucker5/miniconda3/envs/s-niv-MAGs/data/input/adapters/illumina-adapters.fa
--metaG_sample_list=/home/etucker5/miniconda3/envs/s-niv-MAGs/data/input/SampleList_ForAssembly_metaG.txt
--megahit_cpu=80 --megahit_min_contig=1000 --megahit_mem=0.95
在执行时,它无法识别我的 config.yaml 文件中的参数(例如):
snakemake: error: unrecognized arguments: --inputDIR=[path\to\dir]
据我了解,Snakefile 应该能够使用 config.yaml 中所述的任何参数:
INPUTDIR = config["inputDIR"]
何时:
configfile: "config.yaml"
在我的 Snakefile 中输入。
另外,我的 config.yaml 可以正确识别非自定义参数,例如:
max-jobs-per-second: 1
我需要为这个特定的 config.yaml 启动一些自定义库设置吗?这是我第一次使用 Snakemake,我仍在学习如何正确使用配置文件。
此外,在将路径直接交换到 Snakefile 时,我能够获得我的 dryrun 的摘要输出,而不会出现无法识别的参数错误。
【问题讨论】:
-
如果这是您第一次使用 Snakemake,请尽量不要使事情过于复杂。首先尝试让它在本地运行,而不是在
slurm。如果您摆脱所有 slurm 的东西并在本地尝试会发生什么?你得到的完整堆栈跟踪是什么?你能提供一个最小的可重现的例子吗?您刚刚展示了您的 snakemake bash 命令,而不是 Snakefile 或 config.yaml。很难像那样帮助你。 -
另外你的标题没有多大意义,它以神秘的方式结束:
"snakemake: error: unrecognized arguments:" for custom自定义什么? -
除了@CorneliusRoemer:发布你执行的snakemake命令(如果与上面不同);从snakemake发布完整的错误,从您的终端复制并粘贴而不进行编辑;显示您访问
config["inputDIR"]的Snakefile 部分和config.yaml的内容。除非这些信息真的很大或包含敏感数据,否则最好发布更多而不是更少。 -
@BHapi 你能把所有的 slurm 东西拿走吗?当您不熟悉 Snakemake 时,尝试一些复杂的(集群)是在自找麻烦。首先尝试简单(本地)。那么这只是一个集群问题吗?我对你写问题的方式感到困惑。集群上是否存在路径
/home/etucker5? -
@BHapi,您是正确的,您应该能够使用
config["inputDir"]访问值。你得到的错误来自其他一些复杂的因素。首先,我会遵循@CorneliusRoemer 的建议,在您调试时不要使用SLRUM。其次,如果硬编码值可以解决您的问题,请尝试打印出您从配置中获得的值以确保它们是正确的。例如:在INPUTDIR = config["inputDIR"]后面加上print("INPUTDIR is ", INPUTDIR)
标签: python config slurm snakemake