Объявите массив переменной длины в качестве значения конфигурации с помощью Snakemake CLI - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть рабочий процесс Snakemake, в котором одна из записей конфигурации верхнего уровня является массивом переменного размера (в этом конкретном примере один из братьев или сестер может быть включен или не включен в анализ).В настоящее время я использую следующий файл конфигурации:

{
    "case": "/scratch/standage/12175/BAMs/12175.proband.bam",
    "controls": [
        "/scratch/standage/12175/BAMs/12175.mother.bam",
        "/scratch/standage/12175/BAMs/12175.father.bam"
    ]
}

Я знаю, что snakemake позволяет указывать параметры конфигурации в командной строке с флагом --config.Поскольку значение case представляет собой одну строку, это тривиально в командной строке.Но как насчет значений controls?Можно ли передать массив / список значений в качестве одного из параметров конфигурации в командной строке?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Альтернативным решением было бы передать переменные в командной строке следующим образом ...

snakemake --config case=proband.bam control1=mother.bam control2=father.bam

... и затем динамически анализировать параметры конфигурации в Snakefile.Например, любой ключ конфигурации, соответствующий регулярному выражению control\d+, соответствует контрольному образцу.

Так что это возможно, но немного натянуто, и файл конфигурации, вероятно, лучше / чище вариант.

0 голосов
/ 29 ноября 2018

Можно ли передать массив / список значений в качестве одного из параметров конфигурации в командной строке

Я сомневаюсь, что это возможно напрямую, но вы могли бы передать строку в кавычкахразделенных пробелами (или запятыми или какими-либо другими) значениями, которые вы разделяете, чтобы перечислить их внутри Snake-файла:

snakemake -C controls='control1 control2 ...'

Затем внутри Snake-файла:

controls= config['controls'].split(' ')
...