python - 问 : Target rules may not contain wildcards Error in Snakemake - No wildcards in Target?

标签 python wildcard bioinformatics snakemake

我正在尝试创建一个snakemake管道,其输出由特定文件夹中存在的一组排序文件确定。我的文件路径的结构类似于:

project_dir
>    Snakefile
>    code
>        python_scripts
>            ab1_to_fastq.py
>    data
>        1.ab1_files
>            A.ab1
>            B.ab1
>            C.ab1
>        2.fastq_files

这是我实际的 Snakefile 的代码

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 的输入变量的计算结果为

['data/2.fastq_files/A.fastq', 'data/2.fastq_files/B.fastq', 'data/2.fastq_files/C.fastq']

当我运行脚本时,管道中的打印输出似乎证实了这一点。但是,我收到错误 WorkflowError:目标规则可能不包含通配符。每当我运行此脚本时,请指定具体文件或不带通配符的规则。

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

我错过了什么?

最佳答案

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

关于python - 问 : Target rules may not contain wildcards Error in Snakemake - No wildcards in Target?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48671421/

相关文章:

python - logger.setLevel(logging.INFO) 不会使 logger.info() 可见

python - 列切片 Pandas

Elasticsearch 通配符匹配多个字段

data-structures - 高效查询任意位置的字典数据结构

python - 在执行连接之前如何将染色体名称转换为pyranges中的相同格式

python - 即使条件正确,while 循环也不会结束

python - 弃用警告 : numpy. core.umath_tests

solr - 在 Solr 或 ElasticSearch(尤其是 websolr 或 bonsai.io)中使用根扩展器进行邻近搜索短语?

MySQL 选择使用通配符(但在字段中使用通配符)

python - 将文件解析为数组的更快方法,与第二个文件中的数组进行比较