输入和输出中的通配符不起作用

时间:2019-04-10 16:54:22

标签: snakemake

我在输入和输出中添加了带有通配符的规则get_timezone_periods,但不适用于错误Missing input files for rule all

手动输入路径有效

"data/raw/test1/ros/timezone.csv",
"data/raw/test3/t02/timezone.csv"

不使用通配符

"data/raw/{{db}}/{{user}}/timezone.csv"

我的代码:

SENSORS=["timezone", "touch"]
DBS_USERS={"test1":["ros"],
            "test3":["t02"]}

def db_user_path(paths):
    new_paths = []
    for db, users in DBS_USERS.items():
        for user in users:
            for path in paths:
                new_paths.append(path.replace("db/", db + "/").replace("user/", user+ "/"))
    return new_paths

rule all:
    input:
        sensors = db_user_path(expand("data/raw/db/user/{sensor}.csv", sensor=SENSORS)),
        timezone_periods = db_user_path(["data/processed/db/user/timezone_periods.csv"])

rule download_dataset:
    input:
        "data/external/{db}-{user}.participant"
    output:
        expand("data/raw/{{db}}/{{user}}/{sensor}.csv", sensor=SENSORS)
    script:
        "src/data/download_dataset.R"


rule get_timezone_periods:
    input:
        # This line below does not work
        # "data/raw/{{db}}/{{user}}/timezone.csv"
        # These two lines work
        "data/raw/test1/ros/timezone.csv",
        "data/raw/test3/t02/timezone.csv"
    output:
        # This line below does not work
        # "data/processed/{{db}}/{{user}}/timezone_periods.csv"
        # These two lines work
        "data/processed/test1/ros/timezone_periods.csv",
        "data/processed/test3/t02/timezone_periods.csv"
    script:
        "src/data/get_timezone_periods.R"

1 个答案:

答案 0 :(得分:0)

我刚刚意识到我要添加一副大括号,应该只是{db}