Snakemake: HISAT2 выравнивание многих RNAseq читает против многих геномов ОБНОВЛЕНО - PullRequest
0 голосов
/ 15 января 2020

У меня есть несколько файлов генома с суффиксом от .1.ht2l до .8.ht2l

bob.1.ht2l
...
bob.8.ht2l
steve.1.ht2l 
...
steve.8.ht2l

и нескольких образцов RNAseq

flower_kevin_1.fastq.gz
flower_kevin_2.fastq.gz
flower_daniel_1.fastq.gz
flower_daniel_2.fastq.gz 

Мне нужно выровнять все чтения rnaseq по каждому геном. ОБНОВЛЕНО как предложено dariober:

workdir: "/path/to/aligned"  
(HISAT2_INDEX_PREFIX,)=glob_wildcards("/path/to/index/{prefix}.1.ht2l")
(SAMPLES,)=glob_wildcards("/path/to/{sample}_1.fastq.gz") 
print(HISAT2_INDEX_PREFIX)  
print (SAMPLES)

rule all:
    input: 
        expand("{prefix}.{sample}.bam", zip, prefix=HISAT2_INDEX_PREFIX, sample=SAMPLES)

rule hisat2:
    input:
        hisat2_index=expand("%s.{ix}.ht2l" % "/path/to/index/{prefix}", ix=range(1, 9), prefix = HISAT2_INDEX_PREFIX),
        fastq1="/path/to/{sample}_1.fastq.gz",
        fastq2="/path/to/{sample}_2.fastq.gz"
    output:
        bam = "{prefix}.{sample}.bam",
        txt = "{prefix}.{sample}.txt",
    log: "{prefix}.{sample}.snakemake_log.txt"
    threads: 5
    shell:
      "/Tools/hisat2-2.1.0/hisat2 -p {threads} -x {/path/to/index/{wildcards.prefix}"
      " -1 {input.fastq1} -2 {input.fastq2}  --summary-file {output.txt} |"
      "/Tools/samtools-1.9/samtools sort -@ {threads} -o {output.bam}"

Проблема, которую я получаю, заключается в том, что при запуске HISAT2 принимает в качестве -x входные данные все bob.1.ht2l: bob.8.ht2l и steve.1.ht2l: steve.8 .ht2l сразу. В то время как rna-seq должен отображаться на каждый геном отдельно. Где ошибка? NB: мой предыдущий вопрос: Snakemake: HISAT2 выравнивание многих RNAseq читает против многих геномов

1 Ответ

1 голос
/ 15 января 2020

Я думаю, что ваше замешательство связано с тем, что hisat хочет префикс для индексных файлов, а не для всего списка индексных файлов. Таким образом, вместо -x {input.hisat2_index} (то есть списка индексных файлов) используйте что-то вроде -x /path/to/{wildcards.prefix}.

Другими словами, ввод hisat2_index=expand(...) должен быть там только для того, чтобы snakemake запустил это правило только после того, как эти файлы готовы, но вы не используете их напрямую (ну, конечно, его использует, но вы не передаете их в командной строке).

...