Snakemake - исключение функции ввода

Я пытаюсь запустить код snakemake, используя в качестве входных данных файл .json. При проверке пробного прогона я получил следующую ошибку

InputFunctionException in line 172 of /home/Snakefile_ChIPseq_pe:
KeyError: '130241_1'
Wildcards:
library=130241_1

Это часть кода змейки

rule findPeaks:
    input:
        sample = os.path.join(HOMERTAG_DIR, "{library}"),
        input = lambda wildcards: os.path.join(HOMERTAG_DIR, config['lib_input'][wildcards.library])
    output:
        os.path.join(HOMERPEAK_DIR, "{library}.all.hpeaks")
    params:
        config['homer_findPeaks_params']
    shell:
        "findPeaks {input.sample} -i {input.input} {params} -o {output}"

Вокруг входного образца заключена одинарная кавычка, которая отсутствует в части lib_input. Как добавить эту одинарную кавычку перед переменной?

Также имена библиотек похожи на 12345_1, 12345_2 и т.д., никогда раньше не было этой проблемы, однако впервые у меня есть библиотеки с «подчеркиванием» в именах. Snakemake сначала попытается интерпретировать данное значение как число. Только в случае неудачи он интерпретирует значение как строку. Здесь это не сработает, потому что знак подчеркивания _ интерпретируется как разделитель тысяч.


person RonicK    schedule 18.05.2019    source источник


Ответы (1)


Я предполагаю, что в вашем json-файле идентификаторы библиотеки не цитируются. Например. у вас есть это:

{
    "lib_input": {1234_1: "input.txt"}
}

Вместо того:

{
    "lib_input": {"1234_1": "input.txt"}
}

А может библиотеки 130241_1 вообще нет в json?

person dariober    schedule 19.05.2019