Как прочитать файл config.yaml и передать его в snakemake

#snakemake

#snakemake

Вопрос:

У меня есть ref.fasta файл, содержащий строительные леса. Чтобы распараллелить процесс вызова варианта, я сгруппировал каркасы по хромосомам и создал config.yaml файл, как показано ниже:

 samples:
    chr1A: scaffold26096,scaffold40476
    chr1B: scaffold11969,scaffold83281,scaffold43483
    chr1D: scaffold4701,scaffold102360
 

И сценарий, как показано ниже.

 configfile: "config.yaml"

rule all:
    input:
        expand("scaffolds/{sample}.vcf", sample=config["samples"])

rule gatk:
    input:
        "/path/to/ref.fasta",
        "/path/to/bam.list",
        lambda wildcards: config["samples"][wildcards.sample]
    output:
        outf ="scaffolds/{sample}.vcf"
    shell:
        """
        /Tools/gatk/gatk --java-options "-Xmx16g -XX:ParallelGCThreads=10" HaplotypeCaller -L {input[2]} -R {input[0]} -I {input[1]} -O {output.outf}
        """
 

Я хотел бы получить результаты как chr1A.vcf , chr1B.vcf и chr1D.vcf .

Это выдает ошибку:

 Missing input files for rule gatk:
scaffold4701,scaffold102360
 

Что не так?

Ответ №1:

Я думаю, что ваш файл yaml не содержит данных, которые, по вашему мнению, есть. Я думаю, вы хотите, чтобы каждая хромосома содержала список каркасов, например:

 samples: 
  chr1A: 
    - scaffold26096
    - scaffold40476
  chr1B: 
    - scaffold11969
    - scaffold83281
    - scaffold43483
  chr1D: 
    - scaffold4701
    - scaffold102360
 

(Я не проверял остальную часть вашего кода)

Комментарии:

1. Спасибо, я не знал, что config.yaml должен быть структурирован таким образом. Он по-прежнему выдает мне ту же ошибку.

2. Так что, вероятно, это выдает мне ошибки, потому что каркасы не являются файлами, по именам последовательностей в файле ref.fasta?