#snakemake
#snakemake
Вопрос:
Я новичок в snakemake и пытаюсь создать конвейер, в конфигурации которого был бы файл образца. Правило проанализировало бы этот файл и извлекло бы определенную информацию, которая необходима конвейеру. Итак, я хотел бы добавить это в конфигурационный файл или создать глобальные переменные, возможно ли это?или заставить его ждать завершения действия правила, прежде чем определять конфигурационный файл или переменную?
Я попытался добавить в конфигурационный файл, используя правило с командой shell cat. Но он не пытается запуститься, поскольку результатом является конфигурационный файл. Также пробовал объявлять конфигурационный файл после правила, но это не имеет значения по порядку. Также пытался коснуться выходного файла как части правила
include:"fastqc.snake"
IDS, = glob_wildcards("testdata/samples/{id}.fastq.gz")
rule all:
input: expand("fastqc_reports/{id}_fastqc.html", id=IDS)
rule add:
input:
"test_in.txt"
output:
"config.yaml"
shell:
"cat {input} >> {output}"
configfile: "config.yaml"
Я хотел бы, чтобы содержимое входного файла было добавлено к конфигурационному файлу. На самом деле это будет ряд переменных, которые я нахожу во входном файле. ИЛИ я хотел бы иметь возможность создавать глобальные переменные на основе синтаксического анализа входного файла.
Комментарии:
1. Делая шаг назад, работает ли ваша piepline как ожидалось, если вы удаляете
rule add
и предоставляетеconfig.yaml
непосредственно snakemake? Возможно, вы захотите проверитьonstart
. Обратите внимание, чтоonstart
не запускается для dryruns.2. Еще одно предложение: вместо того, чтобы определять это как правило, вам, возможно, было бы лучше использовать типичную функцию python для того, что
rule add
делает.3. да, это работает без правила добавления. Моя проблема в том, что я хочу иметь возможность добавлять в существующий конфигурационный файл. Или вместо этого иметь возможность запускать скрипт на python, который устанавливает глобальные переменные в моем скрипте snakemake из его входных данных. итак, что-то вроде правила add_vars: input: test_in.txt вывод: dummy_file оболочка: python parseFile.py —ввод test_in.txt с помощью parseFile.py настройка глобальных переменных
4. Я сомневаюсь, что
run
илиshell
позволит ли то, о чем вы просите. Поскольку snakemake допускает множество функций на python, как насчет этого:from parseFile import fn_get_variables; x,y,z=fn_get_variables()
. Конечно,fn_get_variables
это также может быть частью самого скрипта snakemake.5. Спасибо. В итоге я изменил свой конфигурационный файл, а затем создал переменные непосредственно из него при запуске snakemake.