Параметр env Snakemake conda не берется из файла config.yaml - PullRequest
0 голосов
/ 03 января 2019

Я использую conda env, который создаю вручную, а не автоматически с помощью Snakemake.Я делаю это, чтобы сохранить более жесткий контроль версий.

В любом случае, в моем config.yaml есть следующая строка:

conda_env: '/rst1/2017-0205_illuminaseq/scratch/swo-406/snakemake'

Затем, в начале моего Snakefile, я читаю эту переменную (чтение переменных из конфигурации в вашей части оболочки, похоже, не работает, я прав?):

conda_env = config['conda_env']

Затем в части оболочки я приветствую такой параметр, как этот:

rule rsem_quantify:
    input:
        os.path.join(fastq_dir, '{sample}_R1_001.fastq.gz'),
        os.path.join(fastq_dir, '{sample}_R2_001.fastq.gz')
    output:
        os.path.join(analyzed_dir, '{sample}.genes.results'),
        os.path.join(analyzed_dir, '{sample}.STAR.genome.bam')
    threads: 8
    shell:
        '''
        #!/bin/bash
        source activate {conda_env}

        rsem-calculate-expression \
        --paired-end \
        {input} \
        {rsem_ref_base} \
        {analyzed_dir}/{wildcards.sample} \
        --strandedness reverse \
        --num-threads {threads} \
        --star \
        --star-gzipped-read-file \
        --star-output-genome-bam
        '''

Обратите внимание на {conda_env}.Теперь это дает мне следующую ошибку:

Could not find conda environment: None
You can list all discoverable environments with `conda info --envs`.

Теперь, если я изменил {conda_env} для его параметра непосредственно /rst1/2017-0205_illuminaseq/scratch/swo-406/snakemake, он работает!У меня нет проблем с чтением других параметров с использованием этого метода (например, rsem_ref_base и analyzed_dir в приведенном выше примере правила.

Что здесь может быть не так?

С наилучшими пожеланиями,

Freek.

1 Ответ

0 голосов
/ 04 января 2019

Шаблон, который я использую для загрузки переменных в params, что-то вроде

rule rsem_quantify:
    input:
        os.path.join(fastq_dir, '{sample}_R1_001.fastq.gz'),
        os.path.join(fastq_dir, '{sample}_R2_001.fastq.gz')
    output:
        os.path.join(analyzed_dir, '{sample}.genes.results'),
        os.path.join(analyzed_dir, '{sample}.STAR.genome.bam')
    params:
        conda_env=config['conda_env']
    threads: 8
    shell:
        '''
        #!/bin/bash
        source activate {params.conda_env}

        rsem-calculate-expression \

        ...

        '''

Хотя я бы никогда не сделал этого со средой conda, потому что Snakemake имеет встроенную систему управления средой conda. Подробнее см. в этом разделе документации по интегрированному управлению пакетами . Это делает воспроизводимость намного более управляемой.

...