使用“ snakemake --config”传递字符串列表

问题描述

尝试通过--config参数将两个字符串列表传递到Snakemake工作流程时遇到问题。

我的config.yaml包含一个带有两个字符串的列表变量。

illumination_input:[“ sample1 / forward.fastq”,“ sample1 / reverse.fastq”]

当我使用Snakemake更改此YAML文件中的值时,此方法正常工作。

现在,我想使用一个shell脚本运行一批多个Snakemake运行,每个运行都提供不同的Illumina配对末端读取以供使用。我目前仅根据一条规则进行测试。

示例:

snakemake --config \
outdir=testoutputfolder/ \
illumina_input=["sample1/forward.fastq","sample1/reverse.fastq"] -r short_read_trimming

snakemake --config \
outdir=testoutputfolder/ \
illumina_input=["sample2/forward.fastq","sample2/reverse.fastq"] -r short_read_trimming

Snakefile的一部分

rule all:
    input:
        config["outdir"] + "reference-data-shortreads/trimmed/illumina1_trimmed_paired.fq",config["outdir"] + "reference-data-shortreads/trimmed/illumina2_trimmed_paired.fq"

rule short_read_trimming:
    input:
        config["illumina_input"]
    output:
        [config["outdir"] + "reference-data-shortreads/trimmed/illumina1_trimmed_paired.fq",config["outdir"] + "reference-data-shortreads/trimmed/illumina2_trimmed_paired.fq"]
    shell:
        "java -jar {config[trimmomatic_loc]} PE {input[0]} {input[1]} \
        {config[outdir]}reference-data-shortreads/trimmed/illumina1_trimmed_paired.fq {config[outdir]}reference-data-shortreads/trimmed/illumina1_trimmed_unpaired.fq \
        {config[outdir]}reference-data-shortreads/trimmed/illumina2_trimmed_paired.fq {config[outdir]}reference-data-shortreads/trimmed/illumina2_trimmed_unpaired.fq \
        {config[trimmomatic_params]}" 

当我尝试运行此代码时,出现以下错误

Invalid config deFinition: Config entries have to be defined as name=value pairs.

我似乎无法弄清楚如何通过命令行为Snakemake配置提供列表。我试图去掉括号和逗号,并用空格代替它们,但似乎无济于事。

有人有什么主意吗?

解决方法

快要删除列表中各项之间的空格!

snakemake --config \
outdir=testoutputfolder/ \
illumina_input=["sample2/forward.fastq","sample2/reverse.fastq"]