0

Following my previous question:Snakemake: HISAT2 alignment of many RNAseq reads against many genomes UPDATED. I wanted to run the hisat2 alignment using touch in snakemake. I have several genome files with suffix .1.ht2l to .8.ht2l

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

and sereval RNAseq samples

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

I need to align all rnaseq reads against each genome.

workdir: "/path/to/dir/"

(HISAT2_INDEX_PREFIX,)=glob_wildcards('/path/to/dir/{prefix}.fasta')
(SAMPLES,)=glob_wildcards("/path/to/dir/{sample}_1.fastq.gz")

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

rule hisat2_build:
    input:
        database="/path/to/dir/{prefix}.fasta"
    output:
        done = touch("{prefix}")
    threads: 2
    shell:
        ("/Tools/hisat2-2.1.0/hisat2-build -p {threads} {input.database} {wildcards.prefix}")

rule hisat2:
    input:
        hisat2_prefix_done = "{prefix}",
        fastq1="/path/to/dir/{sample}_1.fastq.gz",
        fastq2="/path/to/dir/{sample}_2.fastq.gz"
    output:
        bam = "{prefix}.{sample}.bam",
        txt = "{prefix}.{sample}.txt",
    log: "{prefix}.{sample}.snakemake_log.txt"
    threads: 50
    shell:
        "/Tools/hisat2-2.1.0/hisat2 -p {threads} -x {wildcards.prefix}"
        " -1 {input.fastq1} -2 {input.fastq2}  --summary-file {output.txt} |"
        "/Tools/samtools-1.9/samtools sort -@ {threads} -o {output.bam}"

The output gives me bob and steve aligned ONLY against ONE rna-seq sample (i.e. flower_kevin). I don't know how to solve. Any suggestions would be helpful.

user3224522
  • 1,119
  • 8
  • 19

1 Answers1

0

I solved the problem by removing zip from rule all. Critics about the syntax of code is still welcome.

user3224522
  • 1,119
  • 8
  • 19