Может ли кто-нибудь помочь мне понять, можно ли получить доступ к деталям образца из файла config.yml, когда имена образцов не записаны в рабочем процессе snakemake? Это сделано для того, чтобы я мог повторно использовать рабочий процесс для разных проектов и настраивать только файл конфигурации. Позволь мне привести пример:
У меня есть четыре образца, которые принадлежат друг другу и должны быть проанализированы вместе. Они называются sample1-4. Каждый образец содержит дополнительную информацию, но для простоты скажем, что это просто тег имени, такой как S1, S2 и т. Д.
Мой файл config.yml может выглядеть так:
samples: ["sample1","sample2","sample3","sample4"]
sample1:
tag: "S1"
sample2:
tag: "S2"
sample3:
tag: "S3"
sample4:
tag: "S4"
А вот пример используемого нами snakefile:
configfile: "config.yaml"
rule final:
input: expand("{sample}.txt", sample=config["samples"])
rule rule1:
output: "{sample}.txt"
params: tag=config["{sample}"]["tag"]
shell: """
touch {output}
echo {params.tag} > {output}
Правило 1 пытается создать файл, названный в честь каждого образца, сохраненного в переменной samples
в файле конфигурации. Пока без проблем. Затем я хотел бы напечатать образец тега в этом файле. Поскольку код написан выше, запуск snakemake
завершится ошибкой, потому что config["{sample}"]
будет буквально искать переменную {sample}
в файле конфигурации, которого не существует, потому что вместо этого мне нужно заменить ее текущим образцом, для которого выполняется правило, например sample1
.
Кто-нибудь знает, возможно ли это как-то сделать, и если да, то как я могу это сделать?
В идеале я хотел бы еще больше сжать информацию (см. Ниже), но это будет дальше.
samples:
sample1:
tag: "S1"
sample2:
tag: "S2"
sample3:
tag: "S3"
sample4:
tag: "S4"
tag=lambda wildcards: config[wildcards.sample]["tag"]
. - person Johannes Köster   schedule 10.01.2018