首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >问:目标规则可能不包含通配符Snakemake中出现错误-目标中没有通配符?

问:目标规则可能不包含通配符Snakemake中出现错误-目标中没有通配符?
EN

Stack Overflow用户
提问于 2018-02-08 03:02:11
回答 1查看 1.3K关注 0票数 2

我正在尝试创建一个snakemake管道,它的输出由特定文件夹中的一组序列文件决定。这里我的文件路径的结构类似于:

代码语言:javascript
运行
复制
project_dir
>    Snakefile
>    code
>        python_scripts
>            ab1_to_fastq.py
>    data
>        1.ab1_files
>            A.ab1
>            B.ab1
>            C.ab1
>        2.fastq_files

这是我的实际Snakefile的代码

代码语言:javascript
运行
复制
import glob
import os

def collect_reads():
    ab1_files = glob.glob("data/1.ab1_files/*.ab1")
    ab1_files.sort()
    ab1_reads = [ab1_file.split('/')[-1].replace('.ab1', '') for ab1_file in ab1_files]
    return ab1_reads

READS = collect_reads()
print(expand("data/2.fastq_files/{read}.fastq", read=READS))

rule convert_ab1_to_fastq:
    input:
        ab1="data/1.ab1_files/{read}.ab1"
    output:
        fastq="data/2.fastq_files/{read}.fastq"
    shell:
        "python code/python_scripts/ab1_to_fastq.py --ab1 {input.ab1} --fastq {output.fastq}"

rule all:
    input:
        fastq=expand("data/2.fastq_files/{read}.fastq", read=READS)

我的理解是all应该是我的目标规则,并且该规则中的fastq的输入变量的计算结果为

代码语言:javascript
运行
复制
['data/2.fastq_files/A.fastq', 'data/2.fastq_files/B.fastq', 'data/2.fastq_files/C.fastq']

当我运行我的脚本时,管道中的打印输出似乎证实了这一点。但是,每当我运行此脚本时,都会收到错误WorkflowError: Target rules may not contain wildcards. Please specify concrete files or a rule without wildcards.

奇怪的是,我可以从expand生成的列表中复制一个路径来直接调用snakemake,例如snakemake data/2.fastq_files/A.fastq,管道就会成功完成。

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-08 16:57:28

可能是snakemake认为你的目标规则是convert_ab1_to_fastq而不是all。默认情况下,snakemake将第一个规则作为目标规则。首先声明all,看看这是否能解决您的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48671421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档