Python 3.x Snakefile中的多个命名输入

Python 3.x Snakefile中的多个命名输入,python-3.x,snakemake,Python 3.x,Snakemake,我想制作一个如下所示的管道: 为每个数据集提取一些特征 列出所有功能的唯一列表 从所有原始数据集中提取唯一列表 这是一个基本的例子,我在哪里 input_dict = {"data1": "/path/to/data1", "data2": "/path/to/data2"} rule all: input: expand('data/{dataset}.processed', dataset=input_dict.keys()) rule extract_mast

我想制作一个如下所示的管道:

  • 为每个数据集提取一些特征
  • 列出所有功能的唯一列表
  • 从所有原始数据集中提取唯一列表
  • 这是一个基本的例子,我在哪里

    input_dict = {"data1": "/path/to/data1", "data2": "/path/to/data2"}
    
    rule all:
        input: 
            expand('data/{dataset}.processed', dataset=input_dict.keys())
    
    rule extract_master:
        output:
            'data/{dataset}.processed'
        input:
            master = rules.master_list.output, dataset = lambda wildcards: input_dict[wildcards.dataset]
        shell:
            "./extract_master.py --input {input.dataset} --out {output} --master {input.master}"
    
    rule master_list:
        output:
            'data/master.txt'
        input:
            expand('data/{dataset}.chunk', dataset=input_dict.keys())
        shell:
            './master_list.py --input {input} --output {output}'
    
    rule get_chunk:
        input:
            lambda wildcards: input_dict[wildcards.dataset]
        output:
            'data/{dataset}.chunk'
        shell:
            "./get_chunk.py --input {input} --output {output}"
    
    我得到一个错误:

    'Rules' object has no attribute 'master_list'
    
    我不知道如何指定两个命名的输入,其中每个输入不是一个简单的字符串。如果有语法可以用于
    extract\u master
    规则中的
    input
    部分来解决这个问题,那就太好了。否则,任何关于更好方法的想法都会被欣然接受

    重要的是,请注意,此处引用规则a需要在文件中规则b的上方定义规则a,因为对象必须是已知的。此功能还允许解决使用文件名时不明确的依赖关系

    也就是说,在您的示例中,
    rule master\u list
    应该在
    rule extract\u master
    之前定义

    重要的是,请注意,此处引用规则a需要在文件中规则b的上方定义规则a,因为对象必须是已知的。此功能还允许解决使用文件名时不明确的依赖关系

    也就是说,在您的示例中,
    rule master\u list
    应该在
    rule extract\u master
    之前定义