我尝试使用snakemake运行prokka并统治一切。在后者中,我定义了 prokka 将生成的所有输出文件夹以写入结果。Prokka 需要提供一个文件夹作为输出而不是文件。
我所拥有的简化版本在这里:
PATIENTID_ls = range(2)
rule all:
input:
expand("results_{subjectID}_outputfolder",subjectID=PATIENTID_ls),
rule prokka:
input:
"contigs/subject_{subjectID}/contigs.fasta",
output:
"results/subject_{subjectID}_outputfolder",
shell:
"prokka --cpus 1 --proteins ../GCF_000009645.1_ASM964v1_genomic.gbff --outdir {output} --prefix contigs500_anno9ref {input} "
Run Code Online (Sandbox Code Playgroud)
运行时:
$snakemake -p
Building DAG of jobs...
MissingInputException in line 2 of Snakefile:
Missing input files for rule all:
results_1_outputfolder
results_0_outputfolder
Run Code Online (Sandbox Code Playgroud)
然而,当明确指定输出时它会起作用:
snakemake -p results/subject_1_outputfolder
Run Code Online (Sandbox Code Playgroud)
我确信这是我这边的菜鸟错误,但经过几个小时的尝试后我无法解决这个问题。非常感谢您的帮助。谢谢
小智 3
您的示例存在一些问题,因为您的rule all输出文件与您的不匹配rule prokka输出文件与输出文件
但是,实现您想要执行的操作的一种方法是使用params指定输出目录并将其用作 flag 的参数--outdir {params.outdir}。
类似的例子如下所示:
PATIENTID_ls = [1,2]
PREFIX = "contigs500_anno9ref"
rule all:
input:
expand("results_{subjectID}_outputfolder/{prefix}.gff",subjectID=PATIENTID_ls, prefix=PREFIX),
rule prokka:
input:
"contigs/contigs.fasta",
params:
outdir= "results_{subjectID}_outputfolder",
prefix= PREFIX,
output:
"results_{subjectID}_outputfolder/{prefix}.gff",
shell:
"echo '{params.prefix}' > {params.outdir}/{PREFIX}.gff"
Run Code Online (Sandbox Code Playgroud)
rule prokka您仍然应该在和 中指定一个文件作为输出rule all。根据 prokka存储库上的示例,输出文件本质上是{outdir}/{prefix}.gff. 您可以将其指定为两者的输出rule all,而rule prokka无需在调用命令时直接使用它。
或者,即使似乎没有理由,您也可以使用模拟文件来表示规则的完成。
一个例子是:
PATIENTID_ls = [1,2]
rule all:
input:
expand("results_{subjectID}_outputfolder/mockfile.txt",subjectID=PATIENTID_ls),
rule prokka:
input:
"contigs/contigs.fasta",
params:
outdir= "results_{subjectID}_outputfolder",
prefix= "contigs500_anno9ref",
output:
"results_{subjectID}_outputfolder/mockfile.txt",
shell:
"echo '{params.prefix}' && touch {params.outdir}/mockfile.txt"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9714 次 |
| 最近记录: |