diff --git a/.gitignore b/.gitignore
index 791e748595ec85cc58b9efd02395f392ea9bd031..937346fc2d0c4cb131559489e661cee3bdad0575 100644
--- a/.gitignore
+++ b/.gitignore
@@ -333,4 +333,5 @@ runs/.*
 logs/
 results/
 !tests/test_alfa/results/
+tests/input_files/homo_sapiens/genome.fa.fai
 .java/
diff --git a/README.md b/README.md
index 1946224ad882feebf9ce80cfda45338f815cb3a9..c53835a9eecd64cf88ab5b14cc940b90bbcf1ca6 100644
--- a/README.md
+++ b/README.md
@@ -243,9 +243,9 @@ you do not have these):
 
     ```bash
     cat << EOF | ( umask 0377; cat >> ${HOME}/.netrc; )
-    machine <remote-instance-of-labkey-server>  
+    machine <remote-instance-of-labkey-server>
     login <user-email>
-    password <user-password>  
+    password <user-password>
     EOF
     ```
 
@@ -255,13 +255,13 @@ help screen with option '--help' for further options and information):
 
     ```bash
     python scripts/labkey_to_snakemake.py \
-        --input_dict="scripts/labkey_to_snakemake.dict.tsv" \
+        --labkey-domain="my.labkey.service.io"
+        --labkey-domain="/my/project/path"
+        --input-to-output-mapping="scripts/labkey_to_snakemake.dict.tsv" \
+        --resources-dir="/path/to/my/genome/resources" \
+        --output-table="config/my_run/samples.tsv" \
         --config_file="config/my_run/config.yaml" \
-        --samples_table="config/my_run/samples.tsv" \
-        --remote \
-        --project-name="project_name" \
-        --table-name="table_name" \
-        <path_to_annotation_files>
+        <table_name>
     ```
 
 #### Additional information
diff --git a/Snakefile b/Snakefile
index 48e0b619aeb6af55910bb0f6b86285027b952403..5a8e7ea80e84bc2ad8aebd261277c361e4c28328 100644
--- a/Snakefile
+++ b/Snakefile
@@ -1,12 +1,7 @@
 """General purpose RNA-Seq analysis pipeline developed by the Zavolan Lab"""
-
 import os
-import sys
-
 import pandas as pd
 import shutil
-import glob
-from zipfile import ZipFile 
 
 # Get sample table
 samples_table = pd.read_csv(
@@ -19,16 +14,8 @@ samples_table = pd.read_csv(
 )
 
 # Global config
-localrules: finish, rename_star_rpm_for_alfa, prepare_files_for_report, \
-    prepare_MultiQC_config
+localrules: start, finish, rename_star_rpm_for_alfa, prepare_multiqc_config
 
-# Create log directories
-os.makedirs(
-    os.path.join(
-        os.getcwd(),
-        config['log_dir'],
-    ),
-    exist_ok=True)
 
 if cluster_config:
     os.makedirs(
@@ -47,11 +34,116 @@ rule finish:
         Rule for collecting outputs
     """
     input:
-        MultiQC_report = expand(
+        multiqc_report = os.path.join(
+            config['output_dir'],
+            "multiqc_summary"),
+        bigWig = expand(
             os.path.join(
-                config['output_dir'],
-                "multiqc_summary"),
-            output_dir=config["output_dir"])
+                config["output_dir"],
+                "samples",
+                "{sample}",
+                "bigWig",
+                "{unique_type}",
+                "{sample}_{unique_type}_{strand}.bw"),
+            sample=samples_table.index.values,
+            strand=["plus", "minus"],
+            unique_type=["Unique", "UniqueMultiple"]),
+
+        salmon_merge_genes = expand(
+            os.path.join(
+                config["output_dir"],
+                "summary_salmon",
+                "quantmerge",
+                "genes_{salmon_merge_on}.tsv"),
+            salmon_merge_on=["tpm", "numreads"]),
+
+        salmon_merge_transcripts = expand(
+            os.path.join(
+                config["output_dir"],
+                "summary_salmon",
+                "quantmerge",
+                "transcripts_{salmon_merge_on}.tsv"),
+            salmon_merge_on=["tpm", "numreads"]),
+
+
+rule start:
+    '''
+       Get samples
+    '''
+    input:
+        reads = lambda wildcards:
+            samples_table.loc[wildcards.sample, wildcards.mate],
+
+    output:
+        reads = os.path.join(
+            config["output_dir"],
+            "samples",
+            "{sample}",
+            "start",
+            "{sample}.{mate}.fastq.gz")
+
+    log:
+        stderr = os.path.join(
+            config["log_dir"],
+            "samples",
+            "{sample}",
+            "start_{sample}.{mate}.stderr.log"),
+        stdout = os.path.join(
+            config["log_dir"],
+            "samples",
+            "{sample}",
+            "start_{sample}.{mate}.stdout.log")
+
+    singularity:
+        "docker://bash:5.0.16"
+
+    shell:
+        "(cp {input.reads} {output.reads}) \
+        1> {log.stdout} 2> {log.stderr} "
+
+
+rule fastqc:
+    '''
+        A quality control tool for high throughput sequence data
+    '''
+    input:
+        reads = os.path.join(
+            config["output_dir"],
+            "samples",
+            "{sample}",
+            "start",
+            "{sample}.{mate}.fastq.gz")
+
+    output:
+        outdir = directory(
+            os.path.join(
+                config["output_dir"],
+                "samples",
+                "{sample}",
+                "fastqc",
+                "{mate}"))
+
+    threads: 2
+
+    singularity:
+        "docker://zavolab/fastqc:0.11.9-slim"
+
+    log:
+        stderr = os.path.join(
+            config["log_dir"],
+            "samples",
+            "{sample}",
+            "fastqc_{mate}.stderr.log"),
+        stdout = os.path.join(
+            config["log_dir"],
+            "samples",
+            "{sample}",
+            "fastqc_{mate}.stdout.log")
+
+    shell:
+        "(mkdir -p {output.outdir}; \
+        fastqc --outdir {output.outdir} {input.reads}) \
+        1> {log.stdout} 2> {log.stderr}"
 
 
 rule create_index_star:
@@ -123,23 +215,24 @@ rule create_index_star:
 
 
 rule extract_transcriptome:
-    """ Create transcriptome from genome and gene annotations """
+    """
+        Create transcriptome from genome and gene annotations
+    """
     input:
         genome = lambda wildcards:
             samples_table['genome'][
-                samples_table['organism'] == wildcards.organism
-            ][0],
+                samples_table['organism'] == wildcards.organism][0],
         gtf = lambda wildcards:
             samples_table['gtf'][
-                samples_table['organism'] == wildcards.organism
-            ][0] 
+                samples_table['organism'] == wildcards.organism][0]
+
     output:
         transcriptome = os.path.join(
-                config['output_dir'],
-                "transcriptome",
-                "{organism}",
-                "transcriptome.fa",
-            )
+            config['output_dir'],
+            "transcriptome",
+            "{organism}",
+            "transcriptome.fa")
+
     log:
         stderr = os.path.join(
             config['log_dir'],
@@ -147,8 +240,10 @@ rule extract_transcriptome:
         stdout = os.path.join(
             config['log_dir'],
             "{organism}_extract_transcriptome.log")
+
     singularity:
         "docker://zavolab/gffread:0.11.7-slim"
+
     shell:
         "(gffread \
         -w {output.transcriptome} \
@@ -156,68 +251,28 @@ rule extract_transcriptome:
         1> {log.stdout} 2> {log.stderr}"
 
 
-rule extract_decoys_salmon:
-    """
-        Extract names of the genome targets
-    """
-    input:
-        genome = lambda wildcards:
-            samples_table['genome']
-            [samples_table['organism'] == wildcards.organism]
-            [0],
-
-    output:
-        decoys = os.path.join(
-                config['output_dir'],
-                "transcriptome",
-                "{organism}",
-                "decoys.txt")
-
-    singularity:
-        "docker://bash:5.0.16"
-
-    log:
-        stderr = os.path.join(
-            config['log_dir'],
-            "{organism}_extract_decoys_salmon.stderr.log"),
-        stdout = os.path.join(
-            config['log_dir'],
-            "{organism}_extract_decoys_salmon.stdout.log")
-
-    threads: 1
-
-    shell:
-        """
-        (grep "^>" <{input.genome} \
-        | cut -d " " -f 1 > {output.decoys} && \
-        sed -i.bak -e 's/>//g' {output.decoys}) \
-        1> {log.stdout} 2> {log.stderr}
-        """
-
-
 rule concatenate_transcriptome_and_genome:
     """
         Concatenate genome and transcriptome
     """
     input:
         transcriptome = os.path.join(
-                config['output_dir'],
-                "transcriptome",
-                "{organism}",
-                "transcriptome.fa",
-            ),
+            config['output_dir'],
+            "transcriptome",
+            "{organism}",
+            "transcriptome.fa"),
+
         genome = lambda wildcards:
             samples_table['genome']
             [samples_table['organism'] == wildcards.organism]
-            [0],
+            [0]
 
     output:
         genome_transcriptome = os.path.join(
-                config['output_dir'],
-                "transcriptome",
-                "{organism}",
-                "genome_transcriptome.fa",
-            )
+            config['output_dir'],
+            "transcriptome",
+            "{organism}",
+            "genome_transcriptome.fa")
 
     singularity:
         "docker://bash:5.0.16"
@@ -225,15 +280,12 @@ rule concatenate_transcriptome_and_genome:
     log:
         stderr = os.path.join(
             config['log_dir'],
-            "{organism}_concatenate_transcriptome_and_genome.stderr.log"),
-        stdout = os.path.join(
-            config['log_dir'],
-            "{organism}_concatenate_transcriptome_and_genome.stdout.log")
+            "{organism}_concatenate_transcriptome_and_genome.stderr.log")
 
     shell:
         "(cat {input.transcriptome} {input.genome} \
         1> {output.genome_transcriptome}) \
-        1> {log.stdout} 2> {log.stderr}"
+        2> {log.stderr}"
 
 
 rule create_index_salmon:
@@ -242,16 +294,18 @@ rule create_index_salmon:
     """
     input:
         genome_transcriptome = os.path.join(
-                config['output_dir'],
-                "transcriptome",
-                "{organism}",
-                "genome_transcriptome.fa",
-            ),
-        decoys = os.path.join(
-                config['output_dir'],
-                "transcriptome",
-                "{organism}",
-                "decoys.txt")
+            config['output_dir'],
+            "transcriptome",
+            "{organism}",
+            "genome_transcriptome.fa"),
+        chr_names = lambda wildcards:
+            os.path.join(
+                config['star_indexes'],
+                samples_table["organism"][0],
+                str(samples_table["index_size"][0]),
+                "STAR_index",
+                "chrName.txt")
+
     output:
         index = directory(
             os.path.join(
@@ -279,7 +333,7 @@ rule create_index_salmon:
     shell:
         "(salmon index \
         --transcripts {input.genome_transcriptome} \
-        --decoys {input.decoys} \
+        --decoys {input.chr_names} \
         --index {output.index} \
         --kmerLen {params.kmerLen} \
         --threads {threads}) \
@@ -292,11 +346,11 @@ rule create_index_kallisto:
     """
     input:
         transcriptome = os.path.join(
-                config['output_dir'],
-                "transcriptome",
-                "{organism}",
-                "transcriptome.fa",
-            )
+            config['output_dir'],
+            "transcriptome",
+            "{organism}",
+            "transcriptome.fa")
+
     output:
         index = os.path.join(
             config['kallisto_indexes'],
@@ -332,8 +386,7 @@ rule extract_transcripts_as_bed12:
     """
     input:
         gtf = lambda wildcards:
-            samples_table['gtf']
-            [0]
+            samples_table['gtf'][0]
 
     output:
         bed12 = os.path.join(
@@ -364,18 +417,17 @@ rule index_genomic_alignment_samtools:
     input:
         bam = os.path.join(
             config["output_dir"],
-            "{seqmode}",
+            "samples",
             "{sample}",
             "map_genome",
-            "{sample}_Aligned.sortedByCoord.out.bam")
-
+            "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam"),
     output:
         bai = os.path.join(
             config["output_dir"],
-            "{seqmode}",
+            "samples",
             "{sample}",
             "map_genome",
-            "{sample}_Aligned.sortedByCoord.out.bam.bai")
+            "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam.bai")
 
     singularity:
         "docker://zavolab/samtools:1.10-slim"
@@ -385,161 +437,45 @@ rule index_genomic_alignment_samtools:
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "{seqmode}",
+            "samples",
             "{sample}",
-            "index_genomic_alignment_samtools.stderr.log"),
+            "index_genomic_alignment_samtools.{seqmode}.stderr.log"),
         stdout = os.path.join(
             config["log_dir"],
-            "{seqmode}",
+            "samples",
             "{sample}",
-            "index_genomic_alignment_samtools.stdout.log")
+            "index_genomic_alignment_samtools.{seqmode}.stdout.log")
 
     shell:
         "(samtools index {input.bam} {output.bai};) \
         1> {log.stdout} 2> {log.stderr}"
 
 
-rule star_rpm:
-    ''' Create stranded bedgraph coverage with STARs RPM normalisation '''
-    input: 
-        bam = os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "map_genome",
-            "{sample}_Aligned.sortedByCoord.out.bam"),
-        bai = os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "map_genome",
-            "{sample}_Aligned.sortedByCoord.out.bam.bai")
-
-    output:
-        str1 = (os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "STAR_coverage",
-            "{sample}_Signal.Unique.str1.out.bg"),
-            os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "STAR_coverage",
-            "{sample}_Signal.UniqueMultiple.str1.out.bg")),
-        str2 = (os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "STAR_coverage",
-            "{sample}_Signal.Unique.str2.out.bg"),
-            os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "STAR_coverage",
-            "{sample}_Signal.UniqueMultiple.str2.out.bg"))
-
-    params:
-        out_dir = lambda wildcards, output: os.path.dirname(output.str1[0]),
-        prefix = lambda wildcards, output: os.path.join(os.path.dirname(output.str1[0]),
-            str(wildcards.sample) + "_"),
-        stranded = "Stranded"
-
-    singularity:
-        "docker://zavolab/star:2.7.3a-slim"
-
-    log: 
-        stderr = os.path.join(
-            config["log_dir"],
-            "{seqmode}",
-            "{sample}",
-            "star_rpm_single_end.stderr.log"),
-        stdout = os.path.join(
-            config["log_dir"],
-            "{seqmode}",
-            "{sample}",
-            "star_rpm_single_end.stdout.log")
-
-    threads: 4
-
-    shell:
-        """
-        (mkdir -p {params.out_dir}; \
-        chmod -R 777 {params.out_dir}; \
-        STAR \
-        --runMode inputAlignmentsFromBAM \
-        --runThreadN {threads} \
-        --inputBAMfile {input.bam} \
-        --outWigType "bedGraph" \
-        --outWigStrand {params.stranded} \
-        --outWigNorm "RPM" \
-        --outFileNamePrefix {params.prefix}) \
-        1> {log.stdout} 2> {log.stderr}
-        """
-
-
-rule rename_star_rpm_for_alfa:
-    input:
-        str1 = os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "STAR_coverage",
-            "{sample}_Signal.{unique}.str1.out.bg"),
-        str2 = os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "STAR_coverage",
-            "{sample}_Signal.{unique}.str2.out.bg")
-    
-    output:
-        plus = os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "ALFA",
-            "{unique}",
-            "{sample}_Signal.{unique}.out.plus.bg"),
-        minus = os.path.join(
-            config["output_dir"],
-            "{seqmode}",
-            "{sample}",
-            "ALFA",
-            "{unique}",
-            "{sample}_Signal.{unique}.out.minus.bg")
-    
-    params:
-        orientation = lambda wildcards: samples_table.loc[wildcards.sample, "kallisto_directionality"]
-    
-    run:
-        if params['orientation'] == "--fr":
-            shutil.copy2(input['str1'], output['plus'])
-            shutil.copy2(input['str2'], output['minus'])
-        elif params['orientation'] == "--rf":
-            shutil.copy2(input['str1'], output['minus'])
-            shutil.copy2(input['str2'], output['plus'])
-
-
 rule calculate_TIN_scores:
     """
-        Caluclate transcript integrity (TIN) score
+        Calculate transcript integrity (TIN) score
     """
     input:
-        bam = os.path.join(
-            config['output_dir'],
-            "{seqmode}",
-            "{sample}",
-            "map_genome",
-            "{sample}_Aligned.sortedByCoord.out.bam"),
-        bai = os.path.join(
-            config['output_dir'],
-            "{seqmode}",
-            "{sample}",
-            "map_genome",
-            "{sample}_Aligned.sortedByCoord.out.bam.bai"),
+        bam = lambda wildcards:
+            expand(
+                os.path.join(
+                    config['output_dir'],
+                    "samples",
+                    "{sample}",
+                    "map_genome",
+                    "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam"),
+                sample=wildcards.sample,
+                seqmode=samples_table.loc[wildcards.sample, 'seqmode']),
+        bai = lambda wildcards:
+            expand(
+                os.path.join(
+                    config['output_dir'],
+                    "samples",
+                    "{sample}",
+                    "map_genome",
+                    "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam.bai"),
+                sample=wildcards.sample,
+                seqmode=samples_table.loc[wildcards.sample, 'seqmode']),
         transcripts_bed12 = os.path.join(
             config['output_dir'],
             "full_transcripts_protein_coding.bed")
@@ -547,7 +483,7 @@ rule calculate_TIN_scores:
     output:
         TIN_score = os.path.join(
             config['output_dir'],
-            "{seqmode}",
+            "samples",
             "{sample}",
             "TIN",
             "TIN_score.tsv")
@@ -558,7 +494,7 @@ rule calculate_TIN_scores:
     log:
         stderr = os.path.join(
             config['log_dir'],
-            "{seqmode}",
+            "samples",
             "{sample}",
             "calculate_TIN_scores.log")
 
@@ -584,25 +520,30 @@ rule merge_TIN_scores:
         TIN_score = expand(
             os.path.join(
                 config['output_dir'],
-                "{seqmode}",
+                "samples",
                 "{sample}",
                 "TIN",
                 "TIN_score.tsv"),
-            zip,
-            sample=[i for i in list(samples_table.index.values)],
-            seqmode=[samples_table.loc[i, 'seqmode']
-                     for i in list(samples_table.index.values)])
+            sample=samples_table.index.values),
 
     output:
         TIN_scores_merged = os.path.join(
             config['output_dir'],
             "TIN_scores_merged.tsv")
 
+    log:
+        stderr = os.path.join(
+            config['log_dir'],
+            "merge_TIN_scores.stderr.log"),
+        stdout = os.path.join(
+            config["log_dir"],
+            "merge_TIN_scores.stdout.log")
+
     params:
         TIN_score_merged_paths = ",".join(expand(
             os.path.join(
                 config['output_dir'],
-                "{seqmode}",
+                "samples",
                 "{sample}",
                 "TIN",
                 "TIN_score.tsv"),
@@ -611,14 +552,6 @@ rule merge_TIN_scores:
             seqmode=[samples_table.loc[i, 'seqmode']
                      for i in list(samples_table.index.values)]))
 
-    log:
-        stderr = os.path.join(
-            config['log_dir'],
-            "merge_TIN_scores.stderr.log"),
-        stdout = os.path.join(
-            config["log_dir"],
-            "merge_TIN_scores.stdout.log")
-
     threads: 1
 
     singularity:
@@ -643,15 +576,15 @@ rule plot_TIN_scores:
     output:
         TIN_boxplot_PNG = os.path.join(
             config['output_dir'],
-            "TIN_scores_boxplot.png"),
+            "TIN_scores_boxplot_mqc.png"),
         TIN_boxplot_PDF = os.path.join(
             config['output_dir'],
-            "TIN_scores_boxplot.pdf")
+            "TIN_scores_boxplot_mqc.pdf")
 
     params:
         TIN_boxplot_prefix = os.path.join(
             config['output_dir'],
-            "TIN_scores_boxplot")
+            "TIN_scores_boxplot_mqc")
 
     log:
         stderr = os.path.join(
@@ -681,13 +614,14 @@ rule salmon_quantmerge_genes:
         salmon_in = expand(
             os.path.join(
                 config["output_dir"],
-                "{seqmode}",
+                "samples",
                 "{sample}",
-                "salmon_quant",
-                "quant.genes.sf"),
+                "{sample}.salmon.{seqmode}",
+                "quant.sf"),
             zip,
-            sample=list(samples_table.index.values),
-            seqmode=list(samples_table["seqmode"]))
+            sample=samples_table.index.values,
+            seqmode=[samples_table.loc[i, 'seqmode']
+                     for i in list(samples_table.index.values)])
 
     output:
         salmon_out = os.path.join(
@@ -697,15 +631,16 @@ rule salmon_quantmerge_genes:
             "genes_{salmon_merge_on}.tsv")
 
     params:
-        salmon_dir = expand(
+        salmon_in = expand(
             os.path.join(
                 config["output_dir"],
-                "{seqmode}",
+                "samples",
                 "{sample}",
-                "salmon_quant"),
+                "{sample}.salmon.{seqmode}"),
             zip,
-            sample=list(samples_table.index.values),
-            seqmode=list(samples_table["seqmode"])),
+            sample=[i for i in list(samples_table.index.values)],
+            seqmode=[samples_table.loc[i, 'seqmode']
+                     for i in list(samples_table.index.values)]),
         sample_name_list = expand(
             "{sample}",
             sample=list(samples_table.index.values)),
@@ -726,7 +661,7 @@ rule salmon_quantmerge_genes:
 
     shell:
         "(salmon quantmerge \
-        --quants {params.salmon_dir} \
+        --quants {params.salmon_in} \
         --genes \
         --names {params.sample_name_list} \
         --column {params.salmon_merge_on} \
@@ -742,13 +677,14 @@ rule salmon_quantmerge_transcripts:
         salmon_in = expand(
             os.path.join(
                 config["output_dir"],
-                "{seqmode}",
+                "samples",
                 "{sample}",
-                "salmon_quant",
+                "{sample}.salmon.{seqmode}",
                 "quant.sf"),
             zip,
-            sample=list(samples_table.index.values),
-            seqmode=list(samples_table["seqmode"])),
+            sample=[i for i in list(samples_table.index.values)],
+            seqmode=[samples_table.loc[i, 'seqmode']
+                     for i in list(samples_table.index.values)])
 
     output:
         salmon_out = os.path.join(
@@ -758,15 +694,17 @@ rule salmon_quantmerge_transcripts:
             "transcripts_{salmon_merge_on}.tsv")
 
     params:
-        salmon_dir = expand(
+        salmon_in = expand(
             os.path.join(
                 config["output_dir"],
-                "{seqmode}",
+                "samples",
                 "{sample}",
-                "salmon_quant"),
+                "{sample}.salmon.{seqmode}"),
             zip,
-            sample=list(samples_table.index.values),
-            seqmode=list(samples_table["seqmode"])),
+            sample=[i for i in list(samples_table.index.values)],
+            seqmode=[samples_table.loc[i, 'seqmode']
+                     for i in list(samples_table.index.values)]),
+
         sample_name_list = expand(
             "{sample}",
             sample=list(samples_table.index.values)),
@@ -787,24 +725,178 @@ rule salmon_quantmerge_transcripts:
 
     shell:
         "(salmon quantmerge \
-        --quants {params.salmon_dir} \
+        --quants {params.salmon_in} \
         --names {params.sample_name_list} \
         --column {params.salmon_merge_on} \
         --output {output.salmon_out}) \
         1> {log.stdout} 2> {log.stderr}"
 
 
-#################################################################################
-### ALFA: Annotation Landscape For Aligned reads
-#################################################################################
+rule star_rpm:
+    '''
+        Create stranded bedgraph coverage with STARs RPM normalisation
+    '''
+    input:
+        bam = lambda wildcards:
+            expand(
+                os.path.join(
+                    config["output_dir"],
+                    "samples",
+                    "{sample}",
+                    "map_genome",
+                    "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam"),
+                sample=wildcards.sample,
+                seqmode=samples_table.loc[wildcards.sample, 'seqmode']),
+        bai = lambda wildcards:
+            expand(
+                os.path.join(
+                    config["output_dir"],
+                    "samples",
+                    "{sample}",
+                    "map_genome",
+                    "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam.bai"),
+                sample=wildcards.sample,
+                seqmode=samples_table.loc[wildcards.sample, 'seqmode']),
+
+    output:
+        str1 = os.path.join(
+            config["output_dir"],
+            "samples",
+            "{sample}",
+            "STAR_coverage",
+            "{sample}_Signal.Unique.str1.out.bg"),
+        str2 = os.path.join(
+            config["output_dir"],
+            "samples",
+            "{sample}",
+            "STAR_coverage",
+            "{sample}_Signal.UniqueMultiple.str1.out.bg"),
+        str3 = os.path.join(
+            config["output_dir"],
+            "samples",
+            "{sample}",
+            "STAR_coverage",
+            "{sample}_Signal.Unique.str2.out.bg"),
+        str4 = os.path.join(
+            config["output_dir"],
+            "samples",
+            "{sample}",
+            "STAR_coverage",
+            "{sample}_Signal.UniqueMultiple.str2.out.bg")
+
+    params:
+        out_dir = lambda wildcards, output:
+            os.path.dirname(output.str1),
+        prefix = lambda wildcards, output:
+            os.path.join(
+                os.path.dirname(output.str1),
+                str(wildcards.sample) + "_"),
+        stranded = "Stranded"
+
+    singularity:
+        "docker://zavolab/star:2.7.3a-slim"
+
+    log:
+        stderr = os.path.join(
+            config["log_dir"],
+            "samples",
+            "{sample}",
+            "star_rpm.stderr.log"),
+        stdout = os.path.join(
+            config["log_dir"],
+            "samples",
+            "{sample}",
+            "star_rpm.stdout.log")
+
+    threads: 4
+
+    shell:
+        "(mkdir -p {params.out_dir}; \
+        chmod -R 777 {params.out_dir}; \
+        STAR \
+        --runMode inputAlignmentsFromBAM \
+        --runThreadN {threads} \
+        --inputBAMfile {input.bam} \
+        --outWigType bedGraph \
+        --outWigStrand {params.stranded} \
+        --outWigNorm RPM \
+        --outFileNamePrefix {params.prefix}) \
+        1> {log.stdout} 2> {log.stderr}"
+
+
+rule rename_star_rpm_for_alfa:
+    input:
+        plus = lambda wildcards:
+            expand(
+                os.path.join(
+                    config["output_dir"],
+                    "samples",
+                    "{sample}",
+                    "STAR_coverage",
+                    "{sample}_Signal.{unique}.{plus}.out.bg"),
+                sample=wildcards.sample,
+                unique=wildcards.unique,
+                plus=samples_table.loc[wildcards.sample, 'alfa_plus']),
+
+        minus = lambda wildcards:
+            expand(
+                os.path.join(
+                    config["output_dir"],
+                    "samples",
+                    "{sample}",
+                    "STAR_coverage",
+                    "{sample}_Signal.{unique}.{minus}.out.bg"),
+                sample=wildcards.sample,
+                unique=wildcards.unique,
+                minus=samples_table.loc[wildcards.sample, 'alfa_minus'])
+
+    output:
+        plus = os.path.join(
+            config["output_dir"],
+            "samples",
+            "{sample}",
+            "ALFA",
+            "{unique}",
+            "{sample}.{unique}.plus.bg"),
+        minus = os.path.join(
+            config["output_dir"],
+            "samples",
+            "{sample}",
+            "ALFA",
+            "{unique}",
+            "{sample}.{unique}.minus.bg")
+
+    params:
+        orientation = lambda wildcards:
+            samples_table.loc[wildcards.sample, "kallisto_directionality"]
+
+    log:
+        stderr = os.path.join(
+            config["log_dir"],
+            "samples",
+            "{sample}",
+            "rename_star_rpm_for_alfa__{unique}.stderr.log"),
+        stdout = os.path.join(
+            config["log_dir"],
+            "samples",
+            "{sample}",
+            "rename_star_rpm_for_alfa__{unique}.stdout.log")
+
+    singularity:
+        "docker://bash:5.0.16"
 
-directionality = {"--fr": "fr-firststrand", "--rf": "fr-secondstrand"}
+    shell:
+        "(cp {input.plus} {output.plus}; \
+         cp {input.minus} {output.minus};) \
+         1>{log.stdout} 2>{log.stderr}"
 
 
 rule generate_alfa_index:
     ''' Generate ALFA index files from sorted GTF file '''
     input:
-        gtf = lambda wildcards: samples_table["gtf"][samples_table["organism"]==wildcards.organism][0],
+        gtf = lambda wildcards:
+            samples_table["gtf"]
+            [samples_table["organism"] == wildcards.organism][0],
         chr_len = os.path.join(
             config["star_indexes"],
             "{organism}",
@@ -813,124 +905,144 @@ rule generate_alfa_index:
             "chrNameLength.txt"),
 
     output:
-        index_stranded = os.path.join(config["alfa_indexes"], 
-            "{organism}", 
-            "{index_size}", 
-            "ALFA", 
+        index_stranded = os.path.join(
+            config["alfa_indexes"],
+            "{organism}",
+            "{index_size}",
+            "ALFA",
             "sorted_genes.stranded.ALFA_index"),
-        index_unstranded = os.path.join(config["alfa_indexes"], 
-            "{organism}", 
-            "{index_size}", 
-            "ALFA", 
+        index_unstranded = os.path.join(
+            config["alfa_indexes"],
+            "{organism}",
+            "{index_size}",
+            "ALFA",
             "sorted_genes.unstranded.ALFA_index")
 
     params:
         genome_index = "sorted_genes",
-        out_dir = lambda wildcards, output: os.path.dirname(output.index_stranded)
+        out_dir = lambda wildcards, output:
+            os.path.dirname(output.index_stranded)
 
     threads: 4
 
-    singularity: 
+    singularity:
         "docker://zavolab/alfa:1.1.1-slim"
 
-    log: 
-        os.path.join(config["log_dir"], "{organism}_{index_size}_generate_alfa_index.log")
+    log:
+        os.path.join(
+            config["log_dir"],
+            "{organism}_{index_size}_generate_alfa_index.log")
 
     shell:
-        """
-        alfa -a {input.gtf} \
-            -g {params.genome_index} \
-            --chr_len {input.chr_len} \
-            -p {threads} \
-            -o {params.out_dir} &> {log}
-        """
+        "(alfa -a {input.gtf} \
+        -g {params.genome_index} \
+        --chr_len {input.chr_len} \
+        -p {threads} \
+        -o {params.out_dir}) &> {log}"
 
 
 rule alfa_qc:
-    ''' Run ALFA from stranded bedgraph files '''
+    '''
+        Run ALFA from stranded bedgraph files
+    '''
     input:
         plus = os.path.join(
             config["output_dir"],
-            "{seqmode}",
+            "samples",
             "{sample}",
             "ALFA",
             "{unique}",
-            "{sample}_Signal.{unique}.out.plus.bg"),
+            "{sample}.{unique}.plus.bg"),
         minus = os.path.join(
             config["output_dir"],
-            "{seqmode}",
+            "samples",
             "{sample}",
             "ALFA",
             "{unique}",
-            "{sample}_Signal.{unique}.out.minus.bg"),
-        gtf = lambda wildcards: os.path.join(config["alfa_indexes"], 
-            samples_table.loc[wildcards.sample, "organism"], 
-            str(samples_table.loc[wildcards.sample, "index_size"]), 
-            "ALFA", 
-            "sorted_genes.stranded.ALFA_index")
+            "{sample}.{unique}.minus.bg"),
+        gtf = lambda wildcards:
+            os.path.join(
+                config["alfa_indexes"],
+                samples_table.loc[wildcards.sample, "organism"],
+                str(samples_table.loc[wildcards.sample, "index_size"]),
+                "ALFA",
+                "sorted_genes.stranded.ALFA_index")
 
     output:
         biotypes = os.path.join(
             config["output_dir"],
-            "{seqmode}",
+            "samples",
             "{sample}",
             "ALFA",
             "{unique}",
             "ALFA_plots.Biotypes.pdf"),
         categories = os.path.join(
             config["output_dir"],
-            "{seqmode}",
+            "samples",
             "{sample}",
             "ALFA",
             "{unique}",
             "ALFA_plots.Categories.pdf"),
         table = os.path.join(
             config["output_dir"],
-            "{seqmode}",
+            "samples",
             "{sample}",
             "ALFA",
             "{unique}",
             "{sample}.ALFA_feature_counts.tsv")
 
     params:
-        out_dir = lambda wildcards, output: os.path.dirname(output.biotypes),
-        alfa_orientation = lambda wildcards: directionality[samples_table.loc[wildcards.sample, "kallisto_directionality"]],
-        in_file_plus = lambda wildcards, input: os.path.basename(input.plus),
-        in_file_minus = lambda wildcards, input: os.path.basename(input.minus),
-        genome_index = lambda wildcards, input: os.path.abspath(os.path.join(os.path.dirname(input.gtf), "sorted_genes")),
+        out_dir = lambda wildcards, output:
+            os.path.dirname(output.biotypes),
+        plus = lambda wildcards, input:
+            os.path.basename(input.plus),
+        minus = lambda wildcards, input:
+            os.path.basename(input.minus),
+        alfa_orientation = lambda wildcards:
+            [samples_table.loc[
+                wildcards.sample, "alfa_directionality"]],
+        genome_index = lambda wildcards, input:
+            os.path.abspath(
+                os.path.join(
+                    os.path.dirname(input.gtf),
+                    "sorted_genes")),
         name = "{sample}"
 
     singularity:
         "docker://zavolab/alfa:1.1.1-slim"
 
-    log: 
-        os.path.abspath(os.path.join(
-            config["log_dir"], 
-            "{seqmode}", 
-            "{sample}", 
-            "alfa_qc.{unique}.log"))
+    log:
+        os.path.join(
+            config["log_dir"],
+            "samples",
+            "{sample}",
+            "alfa_qc.{unique}.log")
 
     shell:
-        """ 
-        cd {params.out_dir}; \
-        (alfa -g {params.genome_index} \
-            --bedgraph {params.in_file_plus} {params.in_file_minus} {params.name} \
-            -s {params.alfa_orientation}) &> {log}
-        """
+        "(cd {params.out_dir}; \
+        alfa \
+        -g {params.genome_index} \
+        --bedgraph {params.plus} {params.minus} {params.name} \
+        -s {params.alfa_orientation}) &> {log}"
 
 
+# cd {params.out_dir};
 rule alfa_qc_all_samples:
-    ''' Run ALFA from stranded bedgraph files on all samples '''
+    '''
+        Run ALFA from stranded bedgraph files on all samples
+    '''
     input:
-        tables = [os.path.join(
-            config["output_dir"],
-            samples_table.loc[sample1, "seqmode"],
-            str(sample1),
-            "ALFA",
-            "{unique}",
-            sample1 + ".ALFA_feature_counts.tsv")
-            for sample1 in list(samples_table.index.values)]
-
+        tables = lambda wildcards:
+            expand(
+                os.path.join(
+                    config["output_dir"],
+                    "samples",
+                    "{sample}",
+                    "ALFA",
+                    "{unique}",
+                    "{sample}.ALFA_feature_counts.tsv"),
+                sample=samples_table.index.values,
+                unique=wildcards.unique)
     output:
         biotypes = os.path.join(
             config["output_dir"],
@@ -944,443 +1056,263 @@ rule alfa_qc_all_samples:
             "ALFA_plots.Categories.pdf")
 
     params:
-        out_dir = lambda wildcards, output: os.path.dirname(output.biotypes)
+        out_dir = lambda wildcards, output:
+            os.path.dirname(output.biotypes)
 
-    log: 
-        os.path.abspath(
-            os.path.join(config["log_dir"], 
-            "alfa_qc_all_samples.{unique}.log"))
+    log:
+        os.path.join(
+            config["log_dir"],
+            "alfa_qc_all_samples.{unique}.log")
 
     singularity:
         "docker://zavolab/alfa:1.1.1-slim"
 
     shell:
-        """
-        (alfa -c {input.tables} -o {params.out_dir}) &> {log}
-        """
+        "(alfa -c {input.tables} -o {params.out_dir}) &> {log}"
 
 
 rule alfa_concat_results:
     input:
-        expand(os.path.join(
-            config["output_dir"],
-            "ALFA",
-            "{unique_type}",
-            "ALFA_plots.{annotation}.pdf"),
-            unique_type = ["Unique", "UniqueMultiple"],
-            annotation = ["Categories", "Biotypes"])
+        expand(
+            os.path.join(
+                config["output_dir"],
+                "ALFA",
+                "{unique}",
+                "ALFA_plots.{annotation}.pdf"),
+            unique=["Unique", "UniqueMultiple"],
+            annotation=["Categories", "Biotypes"])
 
     output:
-        expand(os.path.join(
+        os.path.join(
             config["output_dir"],
             "ALFA",
-            "ALFA_plots.concat.png"))
+            "ALFA_plots_mqc.png")
 
     params:
         density = 300
 
-    log: 
-        os.path.abspath(
-            os.path.join(config["log_dir"], 
-            "alfa_qc_all_samples.concat.log"))
+    log:
+        os.path.join(
+            config["log_dir"],
+            "alfa_qc_all_samples.concat.log")
 
     singularity:
         "docker://zavolab/imagemagick:7.0.8"
 
     shell:
-        """
-        convert -append -density {params.density} \
-            {input} {output} &> {log}
-        """
+        "(convert -append -density {params.density} \
+            {input} {output}) &> {log}"
 
 
-rule prepare_files_for_report:
+rule prepare_multiqc_config:
     '''
-        Re-structure the results and add comments for MultiQC parsing
+        Prepare config for the MultiQC
     '''
     input:
-        outdir1 = expand(
+        script = os.path.join(
+            workflow.basedir,
+            "workflow",
+            "scripts",
+            "rhea_multiqc_config.py")
+
+    output:
+        multiqc_config = os.path.join(
+            config["output_dir"],
+            "multiqc_config.yaml")
+
+    params:
+        logo_path = config['report_logo'],
+        multiqc_intro_text = config['report_description'],
+        url = config['report_url']
+
+    log:
+        stderr = os.path.join(
+            config["log_dir"],
+            "prepare_multiqc_config.stderr.log"),
+        stdout = os.path.join(
+            config["log_dir"],
+            "prepare_multiqc_config.stdout.log")
+
+    shell:
+        "(python {input.script} \
+        --config {output.multiqc_config} \
+        --intro-text '{params.multiqc_intro_text}' \
+        --custom-logo {params.logo_path} \
+        --url '{params.url}') \
+        1> {log.stdout} 2> {log.stderr}"
+
+
+rule multiqc_report:
+    '''
+        Create report with MultiQC
+    '''
+    input:
+        fastqc_se = expand(
             os.path.join(
                 config['output_dir'],
-                "{seqmode}",
+                "samples",
                 "{sample}",
-                "mate1_fastqc"),
-            zip,
-            sample=[i for i in list(samples_table.index.values)],
-            seqmode=[samples_table.loc[i, 'seqmode']
-                     for i in list(samples_table.index.values)]),
+                "fastqc",
+                "{mate}"),
+            sample=samples_table.index.values,
+            mate="fq1"),
+
+        fastqc_pe = expand(
+            os.path.join(
+                config['output_dir'],
+                "samples",
+                "{sample}",
+                "fastqc",
+                "{mate}"),
+            sample=[i for i in list(
+                samples_table[samples_table['seqmode'] == 'pe'].index.values)],
+            mate="fq2"),
+
         pseudoalignment = expand(
             os.path.join(
                 config['output_dir'],
-                "{seqmode}",
+                "samples",
                 "{sample}",
                 "quant_kallisto",
-                "{sample}.kallisto.pseudo.sam"),
+                "{sample}.{seqmode}.kallisto.pseudo.sam"),
             zip,
             sample=[i for i in list(samples_table.index.values)],
             seqmode=[samples_table.loc[i, 'seqmode']
                      for i in list(samples_table.index.values)]),
+
         TIN_boxplot_PNG = os.path.join(
             config['output_dir'],
-            "TIN_scores_boxplot.png"),
+            "TIN_scores_boxplot_mqc.png"),
+
         TIN_boxplot_PDF = os.path.join(
             config['output_dir'],
-            "TIN_scores_boxplot.pdf"),
-        salmon_merge_genes = expand(
-            os.path.join(
-                config["output_dir"],
-                "summary_salmon",
-                "quantmerge",
-                "genes_{salmon_merge_on}.tsv"),
-            salmon_merge_on=["tpm", "numreads"]),
-        salmon_merge_transcripts = expand(
-            os.path.join(
-                config["output_dir"],
-                "summary_salmon",
-                "quantmerge",
-                "transcripts_{salmon_merge_on}.tsv"),
-            salmon_merge_on=["tpm", "numreads"]),
-        star_rpm = expand(
-            os.path.join(
-                config["output_dir"],
-                "{seqmode}",
-                "{sample}",
-                "STAR_coverage",
-                "{sample}_Signal.UniqueMultiple.str1.out.bg"),
-                zip,
-                sample=[i for i in list(samples_table.index.values)],
-                seqmode=[samples_table.loc[i, 'seqmode']
-                        for i in list(samples_table.index.values)]),
+            "TIN_scores_boxplot_mqc.pdf"),
+
         alfa_concat_out = os.path.join(
             config["output_dir"],
             "ALFA",
-            "ALFA_plots.concat.png")
+            "ALFA_plots_mqc.png"),
 
-    output:
-        samples_dir_result = directory(os.path.join(
+        multiqc_config = os.path.join(
             config["output_dir"],
-            "samples")),
-        samples_dir_log = directory(os.path.join(
-            config["log_dir"],
-            "samples"))
+            "multiqc_config.yaml")
+
+    output:
+        multiqc_report = directory(
+            os.path.join(
+                config["output_dir"],
+                "multiqc_summary"))
+
     params:
-        results_dir = config["output_dir"],
-        log_dir = config["log_dir"],
+        results_dir = os.path.join(
+            config["output_dir"]),
+        log_dir = config["log_dir"]
+
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "prepare_files_for_report.stderr.log"),
+            "multiqc_report.stderr.log"),
         stdout = os.path.join(
             config["log_dir"],
-            "prepare_files_for_report.stdout.log")
-    run:
-
-        # remove "single/paired end" from the results directories
-        os.mkdir(output.samples_dir_result)
-        # copy paired end results
-        paired_end_dir = glob.glob(
-            os.path.join(
-                params.results_dir,
-                "paired_end",
-                "*"))
-        for s in paired_end_dir:
-            sample_name = s.split("/")[-1]
-            shutil.copytree(
-                s, \
-                os.path.join(
-                    params.results_dir,
-                    "samples",
-                    sample_name))
-        # copy single end results
-        single_end_dir = glob.glob(
-            os.path.join(
-                params.results_dir,
-                "single_end",
-                "*"))
-        for s in single_end_dir:
-            sample_name = s.split("/")[-1]
-            shutil.copytree(
-                s, \
-                os.path.join(
-                    params.results_dir,
-                    "samples",
-                    sample_name))
+            "multiqc_report.stdout.log")
 
-        # remove "single/paired end" from the logs directories
-        os.mkdir(output.samples_dir_log)
-        # copy paired end results
-        paired_end_dir = glob.glob(
-            os.path.join(
-                params.log_dir,
-                "paired_end",
-                "*"))
-        for s in paired_end_dir:
-            sample_name = s.split("/")[-1]
-            shutil.copytree(
-                s, \
-                os.path.join(
-                    params.log_dir,
-                    "samples",
-                    sample_name))
-        # copy single end results
-        single_end_dir = glob.glob(
-            os.path.join(
-                params.log_dir,
-                "single_end",
-                "*"))
-        for s in single_end_dir:
-            sample_name = s.split("/")[-1]
-            shutil.copytree(
-                s, \
-                os.path.join(
-                    params.log_dir,
-                    "samples",
-                    sample_name))
-
-        # encapsulate salmon quantification results
-        all_samples_dirs = glob.glob(
-            os.path.join(
-                params.results_dir,
-                "samples",
-                "*"))
-        for s in all_samples_dirs:
-            sample_name = s.split("/")[-1]
-            shutil.move(
-                os.path.join(
-                    s,
-                    "salmon_quant"),
-                os.path.join(
-                    s,
-                    sample_name)
-                )
-            os.mkdir(os.path.join(
-                s,
-                "salmon_quant"))
-            shutil.move(
-                os.path.join(
-                    s,
-                    sample_name),
-                os.path.join(
-                    s,
-                    "salmon_quant",
-                    sample_name)
-                )
-
-        # adjust FastQC results 'Filename' field:
-        fastq_zip_list = glob.glob(
-            os.path.join(
-                params.results_dir,
-                "samples",
-                "*",
-                "*_fastqc",
-                "*_fastqc.zip"))
-        for zipfile in fastq_zip_list:
-            sample_name = zipfile.split("/")[-3]
-            absolute_path_zipfile = os.path.abspath(zipfile)
-            zipfile_path_chunks = absolute_path_zipfile.split(os.path.sep)
-            dir_path_to_zipfile = os.path.sep + os.path.join(
-                (*zipfile_path_chunks[:-1]))
-            with ZipFile(zipfile, 'r') as zip_f:
-                zip_f.extractall(dir_path_to_zipfile)
-            fastqc_data_f = os.path.join(
-                zipfile[:-4],
-                "fastqc_data.txt")
-            with open(fastqc_data_f) as f:
-                log_lines = f.read().splitlines()
-            log_lines[3] = "Filename\t" + sample_name+"|"+log_lines[3].split("\t")[1]
-            with open(fastqc_data_f, "w") as f:
-                for i in log_lines: f.write(i+"\n")
-            os.remove(zipfile)
-
-        # adjust Kallisto quantification logs
-        kallisto_logs = glob.glob(
-            os.path.join(
-                params.log_dir,
-                "samples",
-                "*",
-                "genome_quantification_kallisto.stderr.log"))
-        for kallisto_log in kallisto_logs:
-            with open(kallisto_log) as f:
-                log_lines = f.read().splitlines()
-                temp = log_lines[8].split(".")
-            log_lines[8] = temp[0] + "." + temp[2] + "." + temp[3]
-            with open(kallisto_log+".MODIFIED", "w") as f:
-                for i in log_lines: f.write(i+"\n")
-
-        # add #-comment to all cutadapt logs:
-        cutadapt_logs = glob.glob(
-            os.path.join(
-                params.log_dir,
-                "samples",
-                "*",
-                "remove_*_cutadapt.stdout.log"))
-        for cutadapt_log in cutadapt_logs:
-            sample_name = cutadapt_log.split("/")[-2]
-            with open(cutadapt_log) as f:
-                log_lines = f.read().splitlines()
-            log_lines[1] = log_lines[1] + " # " + sample_name
-            with open(cutadapt_log, "w") as f:
-                for i in log_lines: f.write(i+"\n")
-
-        # adjust TIN boxplots filenames for MutliQC recognition
-        os.rename(
-            input.TIN_boxplot_PNG,
-            os.path.join(
-                params.results_dir,
-                "TIN scores_mqc.png"))
-        os.rename(
-            input.TIN_boxplot_PDF,
-            os.path.join(
-                params.results_dir,
-                "TIN scores_mqc.pdf"))
-
-        # adjust alfa plot filename for MutliQC recognition
-        os.rename(
-            input.alfa_concat_out,
-            os.path.join(
-                params.results_dir,
-                "ALFA",
-                "ALFA_plots.concat_mqc.png"))
+    singularity:
+        "docker://ewels/multiqc:1.7"
 
-        # remove old result directories
-        shutil.rmtree(
-            os.path.join(
-                params.results_dir,
-                "paired_end"),
-            ignore_errors=False,
-            onerror=None)
-        shutil.rmtree(
-            os.path.join(
-                params.results_dir,
-                "single_end"),
-            ignore_errors=False,
-            onerror=None)
-        shutil.rmtree(
-            os.path.join(
-                params.log_dir,
-                "paired_end"),
-            ignore_errors=False,
-            onerror=None)
-        shutil.rmtree(
-            os.path.join(
-                params.log_dir,
-                "single_end"),
-            ignore_errors=False,
-            onerror=None)
+    shell:
+        "(multiqc \
+        --outdir {output.multiqc_report} \
+        --config {input.multiqc_config} \
+        {params.results_dir} \
+        {params.log_dir};) \
+        1> {log.stdout} 2> {log.stderr}"
 
 
-rule prepare_MultiQC_config:
+rule sort_bed_4_big:
     '''
-        Prepare config for the MultiQC
+        sort bedGraphs in order to work with bedGraphtobigWig
     '''
     input:
-        samples_dir_result = os.path.join(
+        bg = os.path.join(
             config["output_dir"],
-            "samples"),
-        samples_dir_log = os.path.join(
-            config["log_dir"],
-            "samples")
+            "samples",
+            "{sample}",
+            "ALFA",
+            "{unique}",
+            "{sample}.{unique}.{strand}.bg")
+
     output:
-        multiqc_config = os.path.join(
+        sorted_bg = os.path.join(
             config["output_dir"],
-            "MultiQC_config.yaml")
-    params:
-        logo_path = os.path.join(
-            "..",
-            "..",
-            "images",
-            "logo.128px.png"),
-        results_dir = config["output_dir"]
+            "samples",
+            "{sample}",
+            "bigWig",
+            "{unique}",
+            "{sample}_{unique}_{strand}.sorted.bg")
+
+    singularity:
+        "docker://cjh4zavolab/bedtools:2.27"
+
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "prepare_MultiQC_config.stderr.log"),
-        stdout = os.path.join(
-            config["log_dir"],
-            "prepare_MultiQC_config.stdout.log")
-    run:
-        with open(output.multiqc_config, "w") as YAML:
-            YAML.write("---\n\n")
-            YAML.write("title: \"Rhea\"\n")
-            YAML.write("subtitle: \"RNA-Seq processing pipeline developed by the members of Zavolan Lab\"\n")
-            YAML.write("intro_text: \"Short analysis title from config[analysis_title]\"\n")
-            YAML.write("custom_logo: \""+params.logo_path+"\"\n")
-            YAML.write("custom_logo_url: \"https://www.biozentrum.unibas.ch/research/researchgroups/overview/unit/zavolan/research-group-mihaela-zavolan/\"\n")
-            YAML.write("custom_logo_title: \"ZavoLab\"\n\n")
-            YAML.write("report_header_info:\n")
-            YAML.write("  - Project Type: \"Snakemake workflow\"\n")
-            YAML.write("  - Analysis Type: \"RNA-seq\"\n")
-            YAML.write("  - Analysis Author: \"config[author_name]\"\n")
-            YAML.write("  - Contact E-mail: \"config[author_email]\"\n\n")
-            YAML.write("top_modules:\n\n")
-            YAML.write("  - fastqc:\n")
-            YAML.write("      path_filters:\n")
-            YAML.write("      - \"*/mate1_fastqc/*\"\n")
-            YAML.write("      - \"*/mate2_fastqc/*\"\n")            
-            YAML.write("\n")
-            YAML.write("  - cutadapt:\n")
-            YAML.write("      name: \"Cutadapt: adapter removal\"\n")
-            YAML.write("      path_filters:\n")
-            YAML.write("      - \"*/remove_adapters_cutadapt.stdout.log\"\n")
-            YAML.write("\n")
-            YAML.write("  - cutadapt:\n")
-            YAML.write("      name: \"Cutadapt: polyA tails removal\"\n")
-            YAML.write("      path_filters:\n")
-            YAML.write("      - \"*/remove_polya_cutadapt.stdout.log\"\n")
-            YAML.write("\n")
-            YAML.write("  - star:\n")
-            YAML.write("      path_filters:\n")
-            YAML.write("      - \"*/map_genome/*\"\n")
-            YAML.write("\n")
-            YAML.write("  - alfa:\n")
-            YAML.write("      path_filters:\n")
-            YAML.write("      - \"*/ALFA_plots.concat_mqc.png\"\n")
-            YAML.write("\n")
-            YAML.write("  - TIN_scores:\n")
-            YAML.write("      path_filters:\n")
-            YAML.write("      - \"*/TIN scores_mqc.png\"\n")
-            YAML.write("\n")  
-            YAML.write("  - salmon:\n")
-            YAML.write("      path_filters:\n")
-            YAML.write("      - \"*/salmon_quant/*\"\n")
-            YAML.write("\n")
-            YAML.write("  - kallisto:\n")
-            YAML.write("      path_filters:\n")
-            YAML.write("      - \"*/genome_quantification_kallisto.stderr.log.MODIFIED\"\n")
-            YAML.write("\n")
-            YAML.write("...")
-
-
-rule MULTIQC_report:
+            "samples",
+            "{sample}",
+            "sort_bg_{unique}_{strand}.stderr.log")
+
+    shell:
+        "(sortBed \
+         -i {input.bg} \
+         > {output.sorted_bg};) 2> {log.stderr}"
+
+rule prepare_bigWig:
     '''
-        Create report with MultiQC
+        bedGraphtobigWig, for viewing in genome browsers
     '''
     input:
-        multiqc_config = os.path.join(
+        sorted_bg = os.path.join(
             config["output_dir"],
-            "MultiQC_config.yaml")
+            "samples",
+            "{sample}",
+            "bigWig",
+            "{unique}",
+            "{sample}_{unique}_{strand}.sorted.bg"),
+        chr_sizes = lambda wildcards:
+            os.path.join(
+                config['star_indexes'],
+                samples_table.loc[wildcards.sample, "organism"],
+                str(samples_table.loc[wildcards.sample, "index_size"]),
+                "STAR_index",
+                "chrNameLength.txt")
+
     output:
-        MultiQC_report = directory(os.path.join(
+        bigWig = os.path.join(
             config["output_dir"],
-            "multiqc_summary"))
-    params:
-        results_dir = config["output_dir"],
-        log_dir = config["log_dir"]
+            "samples",
+            "{sample}",
+            "bigWig",
+            "{unique}",
+            "{sample}_{unique}_{strand}.bw")
+
+    singularity:
+        "docker://zavolab/bedgraphtobigwig:4-slim"
+
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "MULTIQC_report.stderr.log"),
+            "samples",
+            "{sample}",
+            "bigwig_{unique}_{strand}.stderr.log"),
+
         stdout = os.path.join(
             config["log_dir"],
-            "MULTIQC_report.stdout.log")
-    singularity:
-        "docker://ewels/multiqc:1.7"
+            "samples",
+            "{sample}",
+            "bigwig_{unique}_{strand}.stdout.log")
+
     shell:
-        """
-        multiqc \
-        --outdir {output.MultiQC_report} \
-        --config {input.multiqc_config} \
-        {params.results_dir} \
-        {params.log_dir} \
-        1> {log.stdout} 2> {log.stderr}
-        """
+        "(bedGraphToBigWig \
+         {input.sorted_bg} \
+         {input.chr_sizes} \
+         {output.bigWig};) \
+         1> {log.stdout} 2> {log.stderr}"
diff --git a/images/dag_test_workflow.svg b/images/dag_test_workflow.svg
index 11a9781cbc1f74944f2d98a0ad123338074b2ae1..bcd33c59a2fcd4207c367689aabad56363167b41 100644
--- a/images/dag_test_workflow.svg
+++ b/images/dag_test_workflow.svg
@@ -1,641 +1,1097 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.38.0 (20140413.2041)
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: snakemake_dag Pages: 1 -->
-<svg width="2252pt" height="913pt"
- viewBox="0.00 0.00 2252.45 913.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 909)">
+<svg width="2326pt" height="846pt"
+ viewBox="0.00 0.00 2325.50 846.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 842)">
 <title>snakemake_dag</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-909 2248.45,-909 2248.45,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-842 2321.5,-842 2321.5,4 -4,4"/>
 <!-- 0 -->
-<g id="node1" class="node"><title>0</title>
-<path fill="none" stroke="#56d85b" stroke-width="2" d="M1166,-36C1166,-36 1136,-36 1136,-36 1130,-36 1124,-30 1124,-24 1124,-24 1124,-12 1124,-12 1124,-6 1130,-0 1136,-0 1136,-0 1166,-0 1166,-0 1172,-0 1178,-6 1178,-12 1178,-12 1178,-24 1178,-24 1178,-30 1172,-36 1166,-36"/>
-<text text-anchor="middle" x="1151" y="-15.5" font-family="sans" font-size="10.00">finish</text>
+<g id="node1" class="node">
+<title>0</title>
+<path fill="none" stroke="#5673d8" stroke-width="2" d="M1486.5,-36C1486.5,-36 1456.5,-36 1456.5,-36 1450.5,-36 1444.5,-30 1444.5,-24 1444.5,-24 1444.5,-12 1444.5,-12 1444.5,-6 1450.5,0 1456.5,0 1456.5,0 1486.5,0 1486.5,0 1492.5,0 1498.5,-6 1498.5,-12 1498.5,-12 1498.5,-24 1498.5,-24 1498.5,-30 1492.5,-36 1486.5,-36"/>
+<text text-anchor="middle" x="1471.5" y="-15.5" font-family="sans" font-size="10.00" fill="#000000">finish</text>
 </g>
 <!-- 1 -->
-<g id="node2" class="node"><title>1</title>
-<path fill="none" stroke="#d87556" stroke-width="2" d="M1185,-108C1185,-108 1117,-108 1117,-108 1111,-108 1105,-102 1105,-96 1105,-96 1105,-84 1105,-84 1105,-78 1111,-72 1117,-72 1117,-72 1185,-72 1185,-72 1191,-72 1197,-78 1197,-84 1197,-84 1197,-96 1197,-96 1197,-102 1191,-108 1185,-108"/>
-<text text-anchor="middle" x="1151" y="-87.5" font-family="sans" font-size="10.00">MULTIQC_report</text>
+<g id="node2" class="node">
+<title>1</title>
+<path fill="none" stroke="#d8a456" stroke-width="2" d="M601.5,-108C601.5,-108 537.5,-108 537.5,-108 531.5,-108 525.5,-102 525.5,-96 525.5,-96 525.5,-84 525.5,-84 525.5,-78 531.5,-72 537.5,-72 537.5,-72 601.5,-72 601.5,-72 607.5,-72 613.5,-78 613.5,-84 613.5,-84 613.5,-96 613.5,-96 613.5,-102 607.5,-108 601.5,-108"/>
+<text text-anchor="middle" x="569.5" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">multiqc_report</text>
 </g>
 <!-- 1&#45;&gt;0 -->
-<g id="edge1" class="edge"><title>1&#45;&gt;0</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1151,-71.6966C1151,-63.9827 1151,-54.7125 1151,-46.1124"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1154.5,-46.1043 1151,-36.1043 1147.5,-46.1044 1154.5,-46.1043"/>
+<g id="edge1" class="edge">
+<title>1&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M613.5085,-74.0838C616.5283,-73.2924 619.5449,-72.5851 622.5,-72 781.3531,-40.5491 1291.0133,-23.3569 1433.9267,-19.0727"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1434.445,-22.559 1444.3368,-18.7641 1434.2375,-15.5621 1434.445,-22.559"/>
 </g>
 <!-- 2 -->
-<g id="node3" class="node"><title>2</title>
-<path fill="none" stroke="#56d8a9" stroke-width="2" d="M1200,-180C1200,-180 1102,-180 1102,-180 1096,-180 1090,-174 1090,-168 1090,-168 1090,-156 1090,-156 1090,-150 1096,-144 1102,-144 1102,-144 1200,-144 1200,-144 1206,-144 1212,-150 1212,-156 1212,-156 1212,-168 1212,-168 1212,-174 1206,-180 1200,-180"/>
-<text text-anchor="middle" x="1151" y="-159.5" font-family="sans" font-size="10.00">prepare_MultiQC_config</text>
+<g id="node3" class="node">
+<title>2</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1126,-252C1126,-252 1057,-252 1057,-252 1051,-252 1045,-246 1045,-240 1045,-240 1045,-228 1045,-228 1045,-222 1051,-216 1057,-216 1057,-216 1126,-216 1126,-216 1132,-216 1138,-222 1138,-228 1138,-228 1138,-240 1138,-240 1138,-246 1132,-252 1126,-252"/>
+<text text-anchor="middle" x="1091.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
-<!-- 2&#45;&gt;1 -->
-<g id="edge2" class="edge"><title>2&#45;&gt;1</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1151,-143.697C1151,-135.983 1151,-126.712 1151,-118.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1154.5,-118.104 1151,-108.104 1147.5,-118.104 1154.5,-118.104"/>
+<!-- 2&#45;&gt;0 -->
+<g id="edge2" class="edge">
+<title>2&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1137.1463,-215.926C1191.2456,-193.6937 1283.2814,-153.2886 1356.5,-108 1387.993,-88.5204 1420.9854,-61.9711 1443.5142,-42.7607"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1446.0236,-45.2187 1451.3187,-36.0419 1441.4566,-39.9137 1446.0236,-45.2187"/>
 </g>
 <!-- 3 -->
-<g id="node4" class="node"><title>3</title>
-<path fill="none" stroke="#c6d856" stroke-width="2" d="M1198.5,-252C1198.5,-252 1103.5,-252 1103.5,-252 1097.5,-252 1091.5,-246 1091.5,-240 1091.5,-240 1091.5,-228 1091.5,-228 1091.5,-222 1097.5,-216 1103.5,-216 1103.5,-216 1198.5,-216 1198.5,-216 1204.5,-216 1210.5,-222 1210.5,-228 1210.5,-228 1210.5,-240 1210.5,-240 1210.5,-246 1204.5,-252 1198.5,-252"/>
-<text text-anchor="middle" x="1151" y="-231.5" font-family="sans" font-size="10.00">prepare_files_for_report</text>
+<g id="node4" class="node">
+<title>3</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1617,-252C1617,-252 1548,-252 1548,-252 1542,-252 1536,-246 1536,-240 1536,-240 1536,-228 1536,-228 1536,-222 1542,-216 1548,-216 1548,-216 1617,-216 1617,-216 1623,-216 1629,-222 1629,-228 1629,-228 1629,-240 1629,-240 1629,-246 1623,-252 1617,-252"/>
+<text text-anchor="middle" x="1582.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
-<!-- 3&#45;&gt;2 -->
-<g id="edge3" class="edge"><title>3&#45;&gt;2</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1151,-215.697C1151,-207.983 1151,-198.712 1151,-190.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1154.5,-190.104 1151,-180.104 1147.5,-190.104 1154.5,-190.104"/>
+<!-- 3&#45;&gt;0 -->
+<g id="edge3" class="edge">
+<title>3&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1573.2271,-215.9555C1553.7614,-178.0762 1508.5421,-90.0818 1485.5158,-45.274"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1488.5083,-43.4396 1480.8245,-36.1451 1482.2823,-46.6392 1488.5083,-43.4396"/>
 </g>
 <!-- 4 -->
-<g id="node5" class="node"><title>4</title>
-<path fill="none" stroke="#78d856" stroke-width="2" d="M280,-324C280,-324 12,-324 12,-324 6,-324 0,-318 0,-312 0,-312 0,-300 0,-300 0,-294 6,-288 12,-288 12,-288 280,-288 280,-288 286,-288 292,-294 292,-300 292,-300 292,-312 292,-312 292,-318 286,-324 280,-324"/>
-<text text-anchor="middle" x="146" y="-309" font-family="sans" font-size="10.00">pe_fastqc</text>
-<text text-anchor="middle" x="146" y="-298" font-family="sans" font-size="10.00">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text>
+<g id="node5" class="node">
+<title>4</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1506,-252C1506,-252 1437,-252 1437,-252 1431,-252 1425,-246 1425,-240 1425,-240 1425,-228 1425,-228 1425,-222 1431,-216 1437,-216 1437,-216 1506,-216 1506,-216 1512,-216 1518,-222 1518,-228 1518,-228 1518,-240 1518,-240 1518,-246 1512,-252 1506,-252"/>
+<text text-anchor="middle" x="1471.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
-<!-- 4&#45;&gt;3 -->
-<g id="edge4" class="edge"><title>4&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M292.014,-288.792C295.035,-288.52 298.033,-288.255 301,-288 590.339,-263.126 936.045,-245.222 1081.31,-238.235"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1081.6,-241.725 1091.42,-237.751 1081.26,-234.733 1081.6,-241.725"/>
+<!-- 4&#45;&gt;0 -->
+<g id="edge4" class="edge">
+<title>4&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1471.5,-215.9555C1471.5,-178.3938 1471.5,-91.5541 1471.5,-46.4103"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1475.0001,-46.145 1471.5,-36.1451 1468.0001,-46.1451 1475.0001,-46.145"/>
 </g>
 <!-- 5 -->
-<g id="node6" class="node"><title>5</title>
-<path fill="none" stroke="#61d856" stroke-width="2" d="M602,-324C602,-324 322,-324 322,-324 316,-324 310,-318 310,-312 310,-312 310,-300 310,-300 310,-294 316,-288 322,-288 322,-288 602,-288 602,-288 608,-288 614,-294 614,-300 614,-300 614,-312 614,-312 614,-318 608,-324 602,-324"/>
-<text text-anchor="middle" x="462" y="-309" font-family="sans" font-size="10.00">fastqc</text>
-<text text-anchor="middle" x="462" y="-298" font-family="sans" font-size="10.00">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text>
+<g id="node6" class="node">
+<title>5</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1728,-252C1728,-252 1659,-252 1659,-252 1653,-252 1647,-246 1647,-240 1647,-240 1647,-228 1647,-228 1647,-222 1653,-216 1659,-216 1659,-216 1728,-216 1728,-216 1734,-216 1740,-222 1740,-228 1740,-228 1740,-240 1740,-240 1740,-246 1734,-252 1728,-252"/>
+<text text-anchor="middle" x="1693.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
-<!-- 5&#45;&gt;3 -->
-<g id="edge5" class="edge"><title>5&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M614.42,-289.384C618.998,-288.917 623.533,-288.455 628,-288 790.391,-271.457 981.161,-252.159 1081.39,-242.031"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1081.79,-245.508 1091.39,-241.02 1081.09,-238.543 1081.79,-245.508"/>
+<!-- 5&#45;&gt;0 -->
+<g id="edge5" class="edge">
+<title>5&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1674.9542,-215.9555C1635.4514,-177.5203 1542.9186,-87.4884 1497.5331,-43.3295"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1499.7571,-40.6101 1490.1491,-36.1451 1494.8756,-45.6272 1499.7571,-40.6101"/>
 </g>
 <!-- 6 -->
-<g id="node7" class="node"><title>6</title>
-<path fill="none" stroke="#56c1d8" stroke-width="2" d="M1393,-468C1393,-468 1251,-468 1251,-468 1245,-468 1239,-462 1239,-456 1239,-456 1239,-444 1239,-444 1239,-438 1245,-432 1251,-432 1251,-432 1393,-432 1393,-432 1399,-432 1405,-438 1405,-444 1405,-444 1405,-456 1405,-456 1405,-462 1399,-468 1393,-468"/>
-<text text-anchor="middle" x="1322" y="-447.5" font-family="sans" font-size="10.00">pe_genome_quantification_kallisto</text>
+<g id="node7" class="node">
+<title>6</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1839,-252C1839,-252 1770,-252 1770,-252 1764,-252 1758,-246 1758,-240 1758,-240 1758,-228 1758,-228 1758,-222 1764,-216 1770,-216 1770,-216 1839,-216 1839,-216 1845,-216 1851,-222 1851,-228 1851,-228 1851,-240 1851,-240 1851,-246 1845,-252 1839,-252"/>
+<text text-anchor="middle" x="1804.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
-<!-- 6&#45;&gt;3 -->
-<g id="edge6" class="edge"><title>6&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1328.46,-431.931C1339.29,-400.128 1356.95,-331.131 1325,-288 1301.2,-255.876 1258.39,-242.563 1221.19,-237.312"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1221.22,-233.789 1210.87,-236.035 1220.36,-240.736 1221.22,-233.789"/>
+<!-- 6&#45;&gt;0 -->
+<g id="edge6" class="edge">
+<title>6&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1777.8662,-215.9626C1733.078,-185.7267 1639.7034,-123.1035 1559.5,-72 1542.4084,-61.1097 1523.2489,-49.3058 1507.182,-39.5195"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1508.9704,-36.5108 1498.6069,-34.3089 1505.3353,-42.493 1508.9704,-36.5108"/>
 </g>
 <!-- 7 -->
-<g id="node8" class="node"><title>7</title>
-<path fill="none" stroke="#d89556" stroke-width="2" d="M683,-468C683,-468 557,-468 557,-468 551,-468 545,-462 545,-456 545,-456 545,-444 545,-444 545,-438 551,-432 557,-432 557,-432 683,-432 683,-432 689,-432 695,-438 695,-444 695,-444 695,-456 695,-456 695,-462 689,-468 683,-468"/>
-<text text-anchor="middle" x="620" y="-447.5" font-family="sans" font-size="10.00">genome_quantification_kallisto</text>
+<g id="node8" class="node">
+<title>7</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M2241,-252C2241,-252 2172,-252 2172,-252 2166,-252 2160,-246 2160,-240 2160,-240 2160,-228 2160,-228 2160,-222 2166,-216 2172,-216 2172,-216 2241,-216 2241,-216 2247,-216 2253,-222 2253,-228 2253,-228 2253,-240 2253,-240 2253,-246 2247,-252 2241,-252"/>
+<text text-anchor="middle" x="2206.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
-<!-- 7&#45;&gt;3 -->
-<g id="edge7" class="edge"><title>7&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M618.625,-431.954C616.973,-398.6 618.624,-324.763 661,-288 692.11,-261.01 953.591,-244.639 1081.32,-238.181"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1081.59,-241.672 1091.4,-237.678 1081.24,-234.681 1081.59,-241.672"/>
+<!-- 7&#45;&gt;0 -->
+<g id="edge7" class="edge">
+<title>7&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M2159.694,-217.3155C2071.6715,-186.2796 1875.1481,-118.6015 1706.5,-72 1637.2891,-52.8754 1555.3243,-35.1362 1508.7679,-25.5116"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1509.333,-22.0547 1498.8331,-23.4701 1507.9239,-28.9114 1509.333,-22.0547"/>
 </g>
 <!-- 8 -->
-<g id="node9" class="node"><title>8</title>
-<path fill="none" stroke="#d86656" stroke-width="2" d="M1449.5,-396C1449.5,-396 1384.5,-396 1384.5,-396 1378.5,-396 1372.5,-390 1372.5,-384 1372.5,-384 1372.5,-372 1372.5,-372 1372.5,-366 1378.5,-360 1384.5,-360 1384.5,-360 1449.5,-360 1449.5,-360 1455.5,-360 1461.5,-366 1461.5,-372 1461.5,-372 1461.5,-384 1461.5,-384 1461.5,-390 1455.5,-396 1449.5,-396"/>
-<text text-anchor="middle" x="1417" y="-375.5" font-family="sans" font-size="10.00">plot_TIN_scores</text>
+<g id="node9" class="node">
+<title>8</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M2061,-252C2061,-252 1992,-252 1992,-252 1986,-252 1980,-246 1980,-240 1980,-240 1980,-228 1980,-228 1980,-222 1986,-216 1992,-216 1992,-216 2061,-216 2061,-216 2067,-216 2073,-222 2073,-228 2073,-228 2073,-240 2073,-240 2073,-246 2067,-252 2061,-252"/>
+<text text-anchor="middle" x="2026.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
-<!-- 8&#45;&gt;3 -->
-<g id="edge8" class="edge"><title>8&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1410.19,-359.799C1401.28,-339.516 1383.69,-306.261 1358,-288 1317.83,-259.444 1263.61,-246.253 1220.74,-240.17"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1221.03,-236.678 1210.66,-238.84 1220.11,-243.618 1221.03,-236.678"/>
+<!-- 8&#45;&gt;0 -->
+<g id="edge8" class="edge">
+<title>8&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1988.0371,-215.9449C1920.1709,-184.4533 1774.3382,-118.4172 1647.5,-72 1600.2397,-54.7048 1544.5339,-38.2564 1508.6505,-28.1561"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1509.2038,-24.6767 1498.6308,-25.3558 1507.3196,-31.4183 1509.2038,-24.6767"/>
 </g>
 <!-- 9 -->
-<g id="node10" class="node"><title>9</title>
-<path fill="none" stroke="#b6d856" stroke-width="2" d="M794,-324C794,-324 682,-324 682,-324 676,-324 670,-318 670,-312 670,-312 670,-300 670,-300 670,-294 676,-288 682,-288 682,-288 794,-288 794,-288 800,-288 806,-294 806,-300 806,-300 806,-312 806,-312 806,-318 800,-324 794,-324"/>
-<text text-anchor="middle" x="738" y="-309" font-family="sans" font-size="10.00">salmon_quantmerge_genes</text>
-<text text-anchor="middle" x="738" y="-298" font-family="sans" font-size="10.00">salmon_merge_on: tpm</text>
+<g id="node10" class="node">
+<title>9</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1950,-252C1950,-252 1881,-252 1881,-252 1875,-252 1869,-246 1869,-240 1869,-240 1869,-228 1869,-228 1869,-222 1875,-216 1881,-216 1881,-216 1950,-216 1950,-216 1956,-216 1962,-222 1962,-228 1962,-228 1962,-240 1962,-240 1962,-246 1956,-252 1950,-252"/>
+<text text-anchor="middle" x="1915.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
-<!-- 9&#45;&gt;3 -->
-<g id="edge9" class="edge"><title>9&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M806.017,-289.934C809.389,-289.263 812.731,-288.614 816,-288 907.236,-270.855 1013.15,-254.726 1081.06,-244.865"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1081.82,-248.292 1091.21,-243.396 1080.82,-241.364 1081.82,-248.292"/>
+<!-- 9&#45;&gt;0 -->
+<g id="edge9" class="edge">
+<title>9&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1882.2342,-215.9069C1825.0771,-185.055 1704.2572,-120.8669 1599.5,-72 1569.0709,-57.8055 1533.8839,-43.0799 1508.1125,-32.5985"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1509.3086,-29.3069 1498.7259,-28.7992 1506.6822,-35.7955 1509.3086,-29.3069"/>
 </g>
 <!-- 10 -->
-<g id="node11" class="node"><title>10</title>
-<path fill="none" stroke="#b6d856" stroke-width="2" d="M957.5,-324C957.5,-324 836.5,-324 836.5,-324 830.5,-324 824.5,-318 824.5,-312 824.5,-312 824.5,-300 824.5,-300 824.5,-294 830.5,-288 836.5,-288 836.5,-288 957.5,-288 957.5,-288 963.5,-288 969.5,-294 969.5,-300 969.5,-300 969.5,-312 969.5,-312 969.5,-318 963.5,-324 957.5,-324"/>
-<text text-anchor="middle" x="897" y="-309" font-family="sans" font-size="10.00">salmon_quantmerge_genes</text>
-<text text-anchor="middle" x="897" y="-298" font-family="sans" font-size="10.00">salmon_merge_on: numreads</text>
-</g>
-<!-- 10&#45;&gt;3 -->
-<g id="edge10" class="edge"><title>10&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M958.811,-287.966C995.746,-277.787 1042.77,-264.826 1081.06,-254.274"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1082.4,-257.537 1091.11,-251.506 1080.54,-250.789 1082.4,-257.537"/>
+<g id="node11" class="node">
+<title>10</title>
+<path fill="none" stroke="#d86656" stroke-width="2" d="M771.5,-108C771.5,-108 643.5,-108 643.5,-108 637.5,-108 631.5,-102 631.5,-96 631.5,-96 631.5,-84 631.5,-84 631.5,-78 637.5,-72 643.5,-72 643.5,-72 771.5,-72 771.5,-72 777.5,-72 783.5,-78 783.5,-84 783.5,-84 783.5,-96 783.5,-96 783.5,-102 777.5,-108 771.5,-108"/>
+<text text-anchor="middle" x="707.5" y="-93" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_genes</text>
+<text text-anchor="middle" x="707.5" y="-82" font-family="sans" font-size="10.00" fill="#000000">salmon_merge_on: tpm</text>
+</g>
+<!-- 10&#45;&gt;0 -->
+<g id="edge10" class="edge">
+<title>10&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M783.8433,-73.4968C787.1001,-72.9587 790.3293,-72.4562 793.5,-72 1036.1977,-37.0802 1331.2594,-23.2809 1434.0545,-19.3142"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1434.3742,-22.8047 1444.2348,-18.9295 1434.1098,-15.8097 1434.3742,-22.8047"/>
 </g>
 <!-- 11 -->
-<g id="node12" class="node"><title>11</title>
-<path fill="none" stroke="#56d87b" stroke-width="2" d="M1130.5,-324C1130.5,-324 999.5,-324 999.5,-324 993.5,-324 987.5,-318 987.5,-312 987.5,-312 987.5,-300 987.5,-300 987.5,-294 993.5,-288 999.5,-288 999.5,-288 1130.5,-288 1130.5,-288 1136.5,-288 1142.5,-294 1142.5,-300 1142.5,-300 1142.5,-312 1142.5,-312 1142.5,-318 1136.5,-324 1130.5,-324"/>
-<text text-anchor="middle" x="1065" y="-309" font-family="sans" font-size="10.00">salmon_quantmerge_transcripts</text>
-<text text-anchor="middle" x="1065" y="-298" font-family="sans" font-size="10.00">salmon_merge_on: tpm</text>
-</g>
-<!-- 11&#45;&gt;3 -->
-<g id="edge11" class="edge"><title>11&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1086.26,-287.697C1097.09,-278.881 1110.42,-268.032 1122.16,-258.474"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1124.44,-261.132 1129.99,-252.104 1120.02,-255.703 1124.44,-261.132"/>
+<g id="node12" class="node">
+<title>11</title>
+<path fill="none" stroke="#d86656" stroke-width="2" d="M951,-108C951,-108 814,-108 814,-108 808,-108 802,-102 802,-96 802,-96 802,-84 802,-84 802,-78 808,-72 814,-72 814,-72 951,-72 951,-72 957,-72 963,-78 963,-84 963,-84 963,-96 963,-96 963,-102 957,-108 951,-108"/>
+<text text-anchor="middle" x="882.5" y="-93" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_genes</text>
+<text text-anchor="middle" x="882.5" y="-82" font-family="sans" font-size="10.00" fill="#000000">salmon_merge_on: numreads</text>
+</g>
+<!-- 11&#45;&gt;0 -->
+<g id="edge11" class="edge">
+<title>11&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M963.3923,-73.466C966.4637,-72.9512 969.5076,-72.4602 972.5,-72 1144.1179,-45.6066 1350.9003,-27.5841 1434.125,-20.8921"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1434.6531,-24.3612 1444.3434,-20.0777 1434.0969,-17.3834 1434.6531,-24.3612"/>
 </g>
 <!-- 12 -->
-<g id="node13" class="node"><title>12</title>
-<path fill="none" stroke="#56d87b" stroke-width="2" d="M1303.5,-324C1303.5,-324 1172.5,-324 1172.5,-324 1166.5,-324 1160.5,-318 1160.5,-312 1160.5,-312 1160.5,-300 1160.5,-300 1160.5,-294 1166.5,-288 1172.5,-288 1172.5,-288 1303.5,-288 1303.5,-288 1309.5,-288 1315.5,-294 1315.5,-300 1315.5,-300 1315.5,-312 1315.5,-312 1315.5,-318 1309.5,-324 1303.5,-324"/>
-<text text-anchor="middle" x="1238" y="-309" font-family="sans" font-size="10.00">salmon_quantmerge_transcripts</text>
-<text text-anchor="middle" x="1238" y="-298" font-family="sans" font-size="10.00">salmon_merge_on: numreads</text>
-</g>
-<!-- 12&#45;&gt;3 -->
-<g id="edge12" class="edge"><title>12&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1216.49,-287.697C1205.54,-278.881 1192.05,-268.032 1180.18,-258.474"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1182.24,-255.646 1172.26,-252.104 1177.86,-261.1 1182.24,-255.646"/>
+<g id="node13" class="node">
+<title>12</title>
+<path fill="none" stroke="#a7d856" stroke-width="2" d="M1143.5,-108C1143.5,-108 993.5,-108 993.5,-108 987.5,-108 981.5,-102 981.5,-96 981.5,-96 981.5,-84 981.5,-84 981.5,-78 987.5,-72 993.5,-72 993.5,-72 1143.5,-72 1143.5,-72 1149.5,-72 1155.5,-78 1155.5,-84 1155.5,-84 1155.5,-96 1155.5,-96 1155.5,-102 1149.5,-108 1143.5,-108"/>
+<text text-anchor="middle" x="1068.5" y="-93" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_transcripts</text>
+<text text-anchor="middle" x="1068.5" y="-82" font-family="sans" font-size="10.00" fill="#000000">salmon_merge_on: tpm</text>
+</g>
+<!-- 12&#45;&gt;0 -->
+<g id="edge12" class="edge">
+<title>12&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1155.613,-73.6222C1158.6112,-73.0726 1161.5803,-72.5305 1164.5,-72 1261.7431,-54.3317 1376.4865,-34.3894 1434.2682,-24.41"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1435.1183,-27.8151 1444.3774,-22.6654 1433.9278,-20.9171 1435.1183,-27.8151"/>
 </g>
 <!-- 13 -->
-<g id="node14" class="node"><title>13</title>
-<path fill="none" stroke="#56d8d8" stroke-width="2" d="M1973.5,-612C1973.5,-612 1942.5,-612 1942.5,-612 1936.5,-612 1930.5,-606 1930.5,-600 1930.5,-600 1930.5,-588 1930.5,-588 1930.5,-582 1936.5,-576 1942.5,-576 1942.5,-576 1973.5,-576 1973.5,-576 1979.5,-576 1985.5,-582 1985.5,-588 1985.5,-588 1985.5,-600 1985.5,-600 1985.5,-606 1979.5,-612 1973.5,-612"/>
-<text text-anchor="middle" x="1958" y="-591.5" font-family="sans" font-size="10.00">star_rpm</text>
-</g>
-<!-- 13&#45;&gt;3 -->
-<g id="edge13" class="edge"><title>13&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1985.7,-591.233C2046.65,-586.769 2189.61,-572.961 2223,-540 2251.78,-511.585 2242,-491.447 2242,-451 2242,-451 2242,-451 2242,-377 2242,-273.61 1461.59,-243.532 1220.86,-236.713"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1220.91,-233.214 1210.82,-236.434 1220.72,-240.211 1220.91,-233.214"/>
-</g>
-<!-- 42 -->
-<g id="node43" class="node"><title>42</title>
-<path fill="none" stroke="#56d0d8" stroke-width="2" d="M2202,-540C2202,-540 2096,-540 2096,-540 2090,-540 2084,-534 2084,-528 2084,-528 2084,-516 2084,-516 2084,-510 2090,-504 2096,-504 2096,-504 2202,-504 2202,-504 2208,-504 2214,-510 2214,-516 2214,-516 2214,-528 2214,-528 2214,-534 2208,-540 2202,-540"/>
-<text text-anchor="middle" x="2149" y="-525" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text>
-<text text-anchor="middle" x="2149" y="-514" font-family="sans" font-size="10.00">unique: Unique</text>
-</g>
-<!-- 13&#45;&gt;42 -->
-<g id="edge71" class="edge"><title>13&#45;&gt;42</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1985.77,-582.821C2013.67,-572.597 2057.46,-556.549 2092.66,-543.648"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="2094.16,-546.828 2102.34,-540.1 2091.75,-540.255 2094.16,-546.828"/>
-</g>
-<!-- 45 -->
-<g id="node46" class="node"><title>45</title>
-<path fill="none" stroke="#56d0d8" stroke-width="2" d="M1932,-540C1932,-540 1826,-540 1826,-540 1820,-540 1814,-534 1814,-528 1814,-528 1814,-516 1814,-516 1814,-510 1820,-504 1826,-504 1826,-504 1932,-504 1932,-504 1938,-504 1944,-510 1944,-516 1944,-516 1944,-528 1944,-528 1944,-534 1938,-540 1932,-540"/>
-<text text-anchor="middle" x="1879" y="-525" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text>
-<text text-anchor="middle" x="1879" y="-514" font-family="sans" font-size="10.00">unique: UniqueMultiple</text>
-</g>
-<!-- 13&#45;&gt;45 -->
-<g id="edge74" class="edge"><title>13&#45;&gt;45</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1938.47,-575.697C1928.62,-566.965 1916.51,-556.24 1905.8,-546.75"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1908.11,-544.117 1898.3,-540.104 1903.47,-549.356 1908.11,-544.117"/>
+<g id="node14" class="node">
+<title>13</title>
+<path fill="none" stroke="#a7d856" stroke-width="2" d="M1335.5,-108C1335.5,-108 1185.5,-108 1185.5,-108 1179.5,-108 1173.5,-102 1173.5,-96 1173.5,-96 1173.5,-84 1173.5,-84 1173.5,-78 1179.5,-72 1185.5,-72 1185.5,-72 1335.5,-72 1335.5,-72 1341.5,-72 1347.5,-78 1347.5,-84 1347.5,-84 1347.5,-96 1347.5,-96 1347.5,-102 1341.5,-108 1335.5,-108"/>
+<text text-anchor="middle" x="1260.5" y="-93" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_transcripts</text>
+<text text-anchor="middle" x="1260.5" y="-82" font-family="sans" font-size="10.00" fill="#000000">salmon_merge_on: numreads</text>
+</g>
+<!-- 13&#45;&gt;0 -->
+<g id="edge13" class="edge">
+<title>13&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1313.4719,-71.9243C1351.1968,-59.0513 1400.9523,-42.0731 1434.4724,-30.635"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1435.9888,-33.8158 1444.3226,-27.2738 1433.7281,-27.1909 1435.9888,-33.8158"/>
 </g>
 <!-- 14 -->
-<g id="node15" class="node"><title>14</title>
-<path fill="none" stroke="#56d8d8" stroke-width="2" d="M1652.5,-612C1652.5,-612 1621.5,-612 1621.5,-612 1615.5,-612 1609.5,-606 1609.5,-600 1609.5,-600 1609.5,-588 1609.5,-588 1609.5,-582 1615.5,-576 1621.5,-576 1621.5,-576 1652.5,-576 1652.5,-576 1658.5,-576 1664.5,-582 1664.5,-588 1664.5,-588 1664.5,-600 1664.5,-600 1664.5,-606 1658.5,-612 1652.5,-612"/>
-<text text-anchor="middle" x="1637" y="-591.5" font-family="sans" font-size="10.00">star_rpm</text>
-</g>
-<!-- 14&#45;&gt;3 -->
-<g id="edge14" class="edge"><title>14&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1609.19,-580.028C1606.1,-578.645 1602.99,-577.277 1600,-576 1560,-558.914 1537.09,-573.204 1509,-540 1482.88,-509.122 1490,-491.447 1490,-451 1490,-451 1490,-451 1490,-377 1490,-261.448 1320.37,-238.32 1221.09,-234.678"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1220.93,-231.172 1210.83,-234.362 1220.71,-238.168 1220.93,-231.172"/>
-</g>
-<!-- 44 -->
-<g id="node45" class="node"><title>44</title>
-<path fill="none" stroke="#56d0d8" stroke-width="2" d="M1784,-540C1784,-540 1678,-540 1678,-540 1672,-540 1666,-534 1666,-528 1666,-528 1666,-516 1666,-516 1666,-510 1672,-504 1678,-504 1678,-504 1784,-504 1784,-504 1790,-504 1796,-510 1796,-516 1796,-516 1796,-528 1796,-528 1796,-534 1790,-540 1784,-540"/>
-<text text-anchor="middle" x="1731" y="-525" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text>
-<text text-anchor="middle" x="1731" y="-514" font-family="sans" font-size="10.00">unique: Unique</text>
+<g id="node15" class="node">
+<title>14</title>
+<path fill="none" stroke="#56a2d8" stroke-width="2" d="M176.5,-612C176.5,-612 146.5,-612 146.5,-612 140.5,-612 134.5,-606 134.5,-600 134.5,-600 134.5,-588 134.5,-588 134.5,-582 140.5,-576 146.5,-576 146.5,-576 176.5,-576 176.5,-576 182.5,-576 188.5,-582 188.5,-588 188.5,-588 188.5,-600 188.5,-600 188.5,-606 182.5,-612 176.5,-612"/>
+<text text-anchor="middle" x="161.5" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">fastqc</text>
 </g>
-<!-- 14&#45;&gt;44 -->
-<g id="edge73" class="edge"><title>14&#45;&gt;44</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1660.24,-575.697C1672.19,-566.796 1686.92,-555.823 1699.85,-546.199"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1702.1,-548.884 1708.03,-540.104 1697.92,-543.27 1702.1,-548.884"/>
-</g>
-<!-- 46 -->
-<g id="node47" class="node"><title>46</title>
-<path fill="none" stroke="#56d0d8" stroke-width="2" d="M1636,-540C1636,-540 1530,-540 1530,-540 1524,-540 1518,-534 1518,-528 1518,-528 1518,-516 1518,-516 1518,-510 1524,-504 1530,-504 1530,-504 1636,-504 1636,-504 1642,-504 1648,-510 1648,-516 1648,-516 1648,-528 1648,-528 1648,-534 1642,-540 1636,-540"/>
-<text text-anchor="middle" x="1583" y="-525" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text>
-<text text-anchor="middle" x="1583" y="-514" font-family="sans" font-size="10.00">unique: UniqueMultiple</text>
-</g>
-<!-- 14&#45;&gt;46 -->
-<g id="edge75" class="edge"><title>14&#45;&gt;46</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1623.65,-575.697C1617.24,-567.389 1609.44,-557.277 1602.39,-548.141"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1605.07,-545.884 1596.19,-540.104 1599.53,-550.16 1605.07,-545.884"/>
+<!-- 14&#45;&gt;1 -->
+<g id="edge14" class="edge">
+<title>14&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M165.0224,-575.8955C170.0018,-548.6824 178.5,-495.5642 178.5,-450 178.5,-450 178.5,-450 178.5,-234 178.5,-192.6022 171.6002,-171.5496 202.5,-144 225.4581,-123.5311 418.5277,-103.5402 515.0336,-94.7126"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="515.5421,-98.181 525.1853,-93.7927 514.9102,-91.2096 515.5421,-98.181"/>
 </g>
 <!-- 15 -->
-<g id="node16" class="node"><title>15</title>
-<path fill="none" stroke="#d6d856" stroke-width="2" d="M1780.5,-324C1780.5,-324 1703.5,-324 1703.5,-324 1697.5,-324 1691.5,-318 1691.5,-312 1691.5,-312 1691.5,-300 1691.5,-300 1691.5,-294 1697.5,-288 1703.5,-288 1703.5,-288 1780.5,-288 1780.5,-288 1786.5,-288 1792.5,-294 1792.5,-300 1792.5,-300 1792.5,-312 1792.5,-312 1792.5,-318 1786.5,-324 1780.5,-324"/>
-<text text-anchor="middle" x="1742" y="-303.5" font-family="sans" font-size="10.00">alfa_concat_results</text>
+<g id="node16" class="node">
+<title>15</title>
+<path fill="none" stroke="#56a2d8" stroke-width="2" d="M231.5,-686.5C231.5,-686.5 201.5,-686.5 201.5,-686.5 195.5,-686.5 189.5,-680.5 189.5,-674.5 189.5,-674.5 189.5,-662.5 189.5,-662.5 189.5,-656.5 195.5,-650.5 201.5,-650.5 201.5,-650.5 231.5,-650.5 231.5,-650.5 237.5,-650.5 243.5,-656.5 243.5,-662.5 243.5,-662.5 243.5,-674.5 243.5,-674.5 243.5,-680.5 237.5,-686.5 231.5,-686.5"/>
+<text text-anchor="middle" x="216.5" y="-666" font-family="sans" font-size="10.00" fill="#000000">fastqc</text>
 </g>
-<!-- 15&#45;&gt;3 -->
-<g id="edge15" class="edge"><title>15&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1691.36,-299.002C1585.68,-286.485 1341.54,-257.568 1220.96,-243.287"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1221.09,-239.777 1210.74,-242.076 1220.26,-246.728 1221.09,-239.777"/>
+<!-- 15&#45;&gt;1 -->
+<g id="edge15" class="edge">
+<title>15&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M216.5,-650.4571C216.5,-622.8072 216.5,-568.2899 216.5,-522 216.5,-522 216.5,-522 216.5,-234 216.5,-170.2499 416.3766,-120.9048 515.3244,-100.3826"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="516.0551,-103.8056 525.1497,-98.3707 514.6509,-96.9479 516.0551,-103.8056"/>
 </g>
 <!-- 16 -->
-<g id="node17" class="node"><title>16</title>
-<path fill="none" stroke="#97d856" stroke-width="2" d="M1322,-830.5C1322,-830.5 1210,-830.5 1210,-830.5 1204,-830.5 1198,-824.5 1198,-818.5 1198,-818.5 1198,-806.5 1198,-806.5 1198,-800.5 1204,-794.5 1210,-794.5 1210,-794.5 1322,-794.5 1322,-794.5 1328,-794.5 1334,-800.5 1334,-806.5 1334,-806.5 1334,-818.5 1334,-818.5 1334,-824.5 1328,-830.5 1322,-830.5"/>
-<text text-anchor="middle" x="1266" y="-810" font-family="sans" font-size="10.00">pe_remove_polya_cutadapt</text>
-</g>
-<!-- 16&#45;&gt;6 -->
-<g id="edge16" class="edge"><title>16&#45;&gt;6</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1266,-794.151C1266,-767.022 1266,-712.909 1266,-667 1266,-667 1266,-667 1266,-593 1266,-549.905 1288.6,-504.262 1305.08,-476.697"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1308.13,-478.421 1310.4,-468.072 1302.17,-474.749 1308.13,-478.421"/>
+<g id="node17" class="node">
+<title>16</title>
+<path fill="none" stroke="#56a2d8" stroke-width="2" d="M1035.5,-761C1035.5,-761 1005.5,-761 1005.5,-761 999.5,-761 993.5,-755 993.5,-749 993.5,-749 993.5,-737 993.5,-737 993.5,-731 999.5,-725 1005.5,-725 1005.5,-725 1035.5,-725 1035.5,-725 1041.5,-725 1047.5,-731 1047.5,-737 1047.5,-737 1047.5,-749 1047.5,-749 1047.5,-755 1041.5,-761 1035.5,-761"/>
+<text text-anchor="middle" x="1020.5" y="-740.5" font-family="sans" font-size="10.00" fill="#000000">fastqc</text>
 </g>
-<!-- 20 -->
-<g id="node21" class="node"><title>20</title>
-<path fill="none" stroke="#a7d856" stroke-width="2" d="M1108.5,-396C1108.5,-396 1005.5,-396 1005.5,-396 999.5,-396 993.5,-390 993.5,-384 993.5,-384 993.5,-372 993.5,-372 993.5,-366 999.5,-360 1005.5,-360 1005.5,-360 1108.5,-360 1108.5,-360 1114.5,-360 1120.5,-366 1120.5,-372 1120.5,-372 1120.5,-384 1120.5,-384 1120.5,-390 1114.5,-396 1108.5,-396"/>
-<text text-anchor="middle" x="1057" y="-375.5" font-family="sans" font-size="10.00">pe_quantification_salmon</text>
+<!-- 16&#45;&gt;1 -->
+<g id="edge16" class="edge">
+<title>16&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1028.8774,-724.7134C1051.4232,-672.4634 1107.0752,-520.5896 1036.5,-432 991.8933,-376.0073 937.1738,-438.4107 879.5,-396 775.0401,-319.1848 833.3627,-225.4811 732.5,-144 694.8299,-113.5685 673.8466,-122.9494 623.4893,-108.128"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="624.3233,-104.7215 613.734,-105.0638 622.2256,-111.3998 624.3233,-104.7215"/>
 </g>
-<!-- 16&#45;&gt;20 -->
-<g id="edge40" class="edge"><title>16&#45;&gt;20</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1258.31,-794.093C1247.21,-767.328 1228,-714.21 1228,-667 1228,-667 1228,-667 1228,-593 1228,-552.553 1230.02,-538.557 1209,-504 1181.67,-459.06 1132.24,-422.965 1097.17,-401.329"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1098.96,-398.319 1088.59,-396.144 1095.34,-404.31 1098.96,-398.319"/>
+<!-- 17 -->
+<g id="node18" class="node">
+<title>17</title>
+<path fill="none" stroke="#61d856" stroke-width="2" d="M457,-252C457,-252 294,-252 294,-252 288,-252 282,-246 282,-240 282,-240 282,-228 282,-228 282,-222 288,-216 294,-216 294,-216 457,-216 457,-216 463,-216 469,-222 469,-228 469,-228 469,-240 469,-240 469,-246 463,-252 457,-252"/>
+<text text-anchor="middle" x="375.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">pe_genome_quantification_kallisto</text>
 </g>
-<!-- 22 -->
-<g id="node23" class="node"><title>22</title>
-<path fill="none" stroke="#56d8b9" stroke-width="2" d="M1822.5,-756C1822.5,-756 1733.5,-756 1733.5,-756 1727.5,-756 1721.5,-750 1721.5,-744 1721.5,-744 1721.5,-732 1721.5,-732 1721.5,-726 1727.5,-720 1733.5,-720 1733.5,-720 1822.5,-720 1822.5,-720 1828.5,-720 1834.5,-726 1834.5,-732 1834.5,-732 1834.5,-744 1834.5,-744 1834.5,-750 1828.5,-756 1822.5,-756"/>
-<text text-anchor="middle" x="1778" y="-735.5" font-family="sans" font-size="10.00">pe_map_genome_star</text>
+<!-- 17&#45;&gt;1 -->
+<g id="edge17" class="edge">
+<title>17&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M400.0702,-215.7623C434.7632,-190.0108 498.1753,-142.942 536.8114,-114.2637"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="539.1856,-116.8602 545.1293,-108.0896 535.0135,-111.2394 539.1856,-116.8602"/>
 </g>
-<!-- 16&#45;&gt;22 -->
-<g id="edge45" class="edge"><title>16&#45;&gt;22</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1334.25,-801.835C1432.73,-787.891 1613.53,-762.29 1711.19,-748.46"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1711.83,-751.905 1721.24,-747.037 1710.85,-744.974 1711.83,-751.905"/>
+<!-- 18 -->
+<g id="node19" class="node">
+<title>18</title>
+<path fill="none" stroke="#d85656" stroke-width="2" d="M645.5,-252C645.5,-252 499.5,-252 499.5,-252 493.5,-252 487.5,-246 487.5,-240 487.5,-240 487.5,-228 487.5,-228 487.5,-222 493.5,-216 499.5,-216 499.5,-216 645.5,-216 645.5,-216 651.5,-216 657.5,-222 657.5,-228 657.5,-228 657.5,-240 657.5,-240 657.5,-246 651.5,-252 645.5,-252"/>
+<text text-anchor="middle" x="572.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">genome_quantification_kallisto</text>
 </g>
-<!-- 17 -->
-<g id="node18" class="node"><title>17</title>
-<path fill="none" stroke="#d88556" stroke-width="2" d="M1188,-540C1188,-540 1104,-540 1104,-540 1098,-540 1092,-534 1092,-528 1092,-528 1092,-516 1092,-516 1092,-510 1098,-504 1104,-504 1104,-504 1188,-504 1188,-504 1194,-504 1200,-510 1200,-516 1200,-516 1200,-528 1200,-528 1200,-534 1194,-540 1188,-540"/>
-<text text-anchor="middle" x="1146" y="-519.5" font-family="sans" font-size="10.00">create_index_kallisto</text>
+<!-- 18&#45;&gt;1 -->
+<g id="edge18" class="edge">
+<title>18&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M572.12,-215.7623C571.6084,-191.201 570.6927,-147.2474 570.0907,-118.3541"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="573.5845,-118.0145 569.8769,-108.0896 566.586,-118.1604 573.5845,-118.0145"/>
 </g>
-<!-- 17&#45;&gt;6 -->
-<g id="edge17" class="edge"><title>17&#45;&gt;6</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1189.05,-503.876C1213.33,-494.222 1243.84,-482.087 1269.51,-471.878"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1271.09,-475.016 1279.09,-468.068 1268.5,-468.512 1271.09,-475.016"/>
+<!-- 19 -->
+<g id="node20" class="node">
+<title>19</title>
+<path fill="none" stroke="#5682d8" stroke-width="2" d="M711.5,-180C711.5,-180 641.5,-180 641.5,-180 635.5,-180 629.5,-174 629.5,-168 629.5,-168 629.5,-156 629.5,-156 629.5,-150 635.5,-144 641.5,-144 641.5,-144 711.5,-144 711.5,-144 717.5,-144 723.5,-150 723.5,-156 723.5,-156 723.5,-168 723.5,-168 723.5,-174 717.5,-180 711.5,-180"/>
+<text text-anchor="middle" x="676.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">plot_TIN_scores</text>
 </g>
-<!-- 17&#45;&gt;7 -->
-<g id="edge19" class="edge"><title>17&#45;&gt;7</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1091.82,-505.829C1088.85,-505.169 1085.89,-504.553 1083,-504 952.4,-479.05 798.675,-464.292 705.335,-456.922"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="705.339,-453.412 695.097,-456.124 704.795,-460.391 705.339,-453.412"/>
+<!-- 19&#45;&gt;1 -->
+<g id="edge19" class="edge">
+<title>19&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M649.4994,-143.8314C636.0669,-134.7927 619.6527,-123.7476 605.1961,-114.0198"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="606.7425,-110.8418 596.492,-108.1628 602.8346,-116.6494 606.7425,-110.8418"/>
 </g>
-<!-- 18 -->
-<g id="node19" class="node"><title>18</title>
-<path fill="none" stroke="#5663d8" stroke-width="2" d="M755,-830.5C755,-830.5 659,-830.5 659,-830.5 653,-830.5 647,-824.5 647,-818.5 647,-818.5 647,-806.5 647,-806.5 647,-800.5 653,-794.5 659,-794.5 659,-794.5 755,-794.5 755,-794.5 761,-794.5 767,-800.5 767,-806.5 767,-806.5 767,-818.5 767,-818.5 767,-824.5 761,-830.5 755,-830.5"/>
-<text text-anchor="middle" x="707" y="-810" font-family="sans" font-size="10.00">remove_polya_cutadapt</text>
+<!-- 20 -->
+<g id="node21" class="node">
+<title>20</title>
+<path fill="none" stroke="#97d856" stroke-width="2" d="M1412,-180C1412,-180 1325,-180 1325,-180 1319,-180 1313,-174 1313,-168 1313,-168 1313,-156 1313,-156 1313,-150 1319,-144 1325,-144 1325,-144 1412,-144 1412,-144 1418,-144 1424,-150 1424,-156 1424,-156 1424,-168 1424,-168 1424,-174 1418,-180 1412,-180"/>
+<text text-anchor="middle" x="1368.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">alfa_concat_results</text>
 </g>
-<!-- 18&#45;&gt;7 -->
-<g id="edge18" class="edge"><title>18&#45;&gt;7</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M692.155,-794.122C671.607,-768.23 637,-717.176 637,-667 637,-667 637,-667 637,-593 637,-552.931 630.244,-506.949 625.25,-478.433"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="628.661,-477.627 623.44,-468.408 621.773,-478.871 628.661,-477.627"/>
+<!-- 20&#45;&gt;1 -->
+<g id="edge20" class="edge">
+<title>20&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1312.9658,-158.1697C1153.4844,-147.147 701.0407,-115.708 623.7686,-107.2571"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="623.8901,-103.7423 613.5145,-105.8863 622.9625,-110.6806 623.8901,-103.7423"/>
 </g>
 <!-- 21 -->
-<g id="node22" class="node"><title>21</title>
-<path fill="none" stroke="#56d89a" stroke-width="2" d="M948.5,-396C948.5,-396 861.5,-396 861.5,-396 855.5,-396 849.5,-390 849.5,-384 849.5,-384 849.5,-372 849.5,-372 849.5,-366 855.5,-360 861.5,-360 861.5,-360 948.5,-360 948.5,-360 954.5,-360 960.5,-366 960.5,-372 960.5,-372 960.5,-384 960.5,-384 960.5,-390 954.5,-396 948.5,-396"/>
-<text text-anchor="middle" x="905" y="-375.5" font-family="sans" font-size="10.00">quantification_salmon</text>
+<g id="node22" class="node">
+<title>21</title>
+<path fill="none" stroke="#56d88a" stroke-width="2" d="M138,-180C138,-180 31,-180 31,-180 25,-180 19,-174 19,-168 19,-168 19,-156 19,-156 19,-150 25,-144 31,-144 31,-144 138,-144 138,-144 144,-144 150,-150 150,-156 150,-156 150,-168 150,-168 150,-174 144,-180 138,-180"/>
+<text text-anchor="middle" x="84.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">prepare_multiqc_config</text>
 </g>
-<!-- 18&#45;&gt;21 -->
-<g id="edge42" class="edge"><title>18&#45;&gt;21</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M707,-794.151C707,-767.022 707,-712.909 707,-667 707,-667 707,-667 707,-593 707,-552.553 703.64,-537.704 726,-504 757.754,-456.137 814.637,-421.138 855.772,-400.545"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="857.372,-403.659 864.817,-396.121 854.296,-397.371 857.372,-403.659"/>
+<!-- 21&#45;&gt;1 -->
+<g id="edge21" class="edge">
+<title>21&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M150.3272,-146.7025C155.1138,-145.7397 159.8754,-144.8269 164.5,-144 289.2993,-121.6855 437.2428,-104.2085 515.186,-95.6907"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="515.6889,-99.1568 525.2528,-94.598 514.9334,-92.1977 515.6889,-99.1568"/>
 </g>
-<!-- 24 -->
-<g id="node25" class="node"><title>24</title>
-<path fill="none" stroke="#d8bc56" stroke-width="2" d="M1619.5,-756C1619.5,-756 1546.5,-756 1546.5,-756 1540.5,-756 1534.5,-750 1534.5,-744 1534.5,-744 1534.5,-732 1534.5,-732 1534.5,-726 1540.5,-720 1546.5,-720 1546.5,-720 1619.5,-720 1619.5,-720 1625.5,-720 1631.5,-726 1631.5,-732 1631.5,-732 1631.5,-744 1631.5,-744 1631.5,-750 1625.5,-756 1619.5,-756"/>
-<text text-anchor="middle" x="1583" y="-735.5" font-family="sans" font-size="10.00">map_genome_star</text>
-</g>
-<!-- 18&#45;&gt;24 -->
-<g id="edge48" class="edge"><title>18&#45;&gt;24</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M767.211,-806.517C927.87,-793.22 1365.27,-757.02 1524.24,-743.863"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1524.63,-747.343 1534.31,-743.03 1524.05,-740.367 1524.63,-747.343"/>
-</g>
-<!-- 19 -->
-<g id="node20" class="node"><title>19</title>
-<path fill="none" stroke="#5673d8" stroke-width="2" d="M1450,-540C1450,-540 1374,-540 1374,-540 1368,-540 1362,-534 1362,-528 1362,-528 1362,-516 1362,-516 1362,-510 1368,-504 1374,-504 1374,-504 1450,-504 1450,-504 1456,-504 1462,-510 1462,-516 1462,-516 1462,-528 1462,-528 1462,-534 1456,-540 1450,-540"/>
-<text text-anchor="middle" x="1412" y="-519.5" font-family="sans" font-size="10.00">merge_TIN_scores</text>
-</g>
-<!-- 19&#45;&gt;8 -->
-<g id="edge20" class="edge"><title>19&#45;&gt;8</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1412.67,-503.815C1413.06,-493.443 1413.57,-479.963 1414,-468 1414.74,-447.272 1415.53,-423.828 1416.11,-406.206"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1419.61,-406.172 1416.45,-396.063 1412.62,-405.942 1419.61,-406.172"/>
-</g>
-<!-- 20&#45;&gt;9 -->
-<g id="edge21" class="edge"><title>20&#45;&gt;9</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M993.212,-363.003C942.204,-351.81 870.473,-336.069 816.041,-324.125"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="816.606,-320.666 806.088,-321.941 815.105,-327.503 816.606,-320.666"/>
-</g>
-<!-- 20&#45;&gt;10 -->
-<g id="edge23" class="edge"><title>20&#45;&gt;10</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1017.86,-359.876C995.987,-350.307 968.543,-338.3 945.338,-328.148"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="946.578,-324.87 936.013,-324.068 943.772,-331.283 946.578,-324.87"/>
-</g>
-<!-- 20&#45;&gt;11 -->
-<g id="edge25" class="edge"><title>20&#45;&gt;11</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1058.98,-359.697C1059.86,-351.983 1060.92,-342.712 1061.9,-334.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1065.39,-334.437 1063.05,-324.104 1058.43,-333.642 1065.39,-334.437"/>
-</g>
-<!-- 20&#45;&gt;12 -->
-<g id="edge27" class="edge"><title>20&#45;&gt;12</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1101.28,-359.876C1126.35,-350.179 1157.9,-337.98 1184.37,-327.743"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1185.8,-330.94 1193.87,-324.068 1183.28,-324.411 1185.8,-330.94"/>
-</g>
-<!-- 21&#45;&gt;9 -->
-<g id="edge22" class="edge"><title>21&#45;&gt;9</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M864.147,-359.876C841.216,-350.264 812.418,-338.193 788.13,-328.013"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="789.296,-324.706 778.72,-324.068 786.59,-331.162 789.296,-324.706"/>
-</g>
-<!-- 21&#45;&gt;10 -->
-<g id="edge24" class="edge"><title>21&#45;&gt;10</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M903.022,-359.697C902.141,-351.983 901.081,-342.712 900.099,-334.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="903.568,-333.642 898.955,-324.104 896.613,-334.437 903.568,-333.642"/>
-</g>
-<!-- 21&#45;&gt;11 -->
-<g id="edge26" class="edge"><title>21&#45;&gt;11</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M944.14,-359.876C966.013,-350.307 993.457,-338.3 1016.66,-328.148"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1018.23,-331.283 1025.99,-324.068 1015.42,-324.87 1018.23,-331.283"/>
-</g>
-<!-- 21&#45;&gt;12 -->
-<g id="edge28" class="edge"><title>21&#45;&gt;12</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M960.512,-365.182C968.722,-363.44 977.081,-361.671 985,-360 1040.05,-348.385 1101.85,-335.436 1150.6,-325.245"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1151.41,-328.652 1160.48,-323.179 1149.97,-321.8 1151.41,-328.652"/>
-</g>
-<!-- 22&#45;&gt;13 -->
-<g id="edge29" class="edge"><title>22&#45;&gt;13</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1834.89,-734.427C1872.5,-729.541 1919.73,-716.711 1947,-684 1961.13,-667.049 1962.99,-641.583 1961.83,-622.229"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1965.31,-621.847 1960.93,-612.198 1958.33,-622.469 1965.31,-621.847"/>
+<!-- 22 -->
+<g id="node23" class="node">
+<title>22</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M926.5,-324C926.5,-324 860.5,-324 860.5,-324 854.5,-324 848.5,-318 848.5,-312 848.5,-312 848.5,-300 848.5,-300 848.5,-294 854.5,-288 860.5,-288 860.5,-288 926.5,-288 926.5,-288 932.5,-288 938.5,-294 938.5,-300 938.5,-300 938.5,-312 938.5,-312 938.5,-318 932.5,-324 926.5,-324"/>
+<text text-anchor="middle" x="893.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
+<text text-anchor="middle" x="893.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: plus</text>
+</g>
+<!-- 22&#45;&gt;2 -->
+<g id="edge22" class="edge">
+<title>22&#45;&gt;2</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M938.9252,-289.4817C967.5656,-279.0671 1004.7665,-265.5395 1035.2645,-254.4493"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1036.7098,-257.648 1044.9116,-250.9412 1034.3176,-251.0694 1036.7098,-257.648"/>
 </g>
 <!-- 23 -->
-<g id="node24" class="node"><title>23</title>
-<path fill="none" stroke="#56a2d8" stroke-width="2" d="M1926,-684C1926,-684 1776,-684 1776,-684 1770,-684 1764,-678 1764,-672 1764,-672 1764,-660 1764,-660 1764,-654 1770,-648 1776,-648 1776,-648 1926,-648 1926,-648 1932,-648 1938,-654 1938,-660 1938,-660 1938,-672 1938,-672 1938,-678 1932,-684 1926,-684"/>
-<text text-anchor="middle" x="1851" y="-669" font-family="sans" font-size="10.00">index_genomic_alignment_samtools</text>
-<text text-anchor="middle" x="1851" y="-658" font-family="sans" font-size="10.00">seqmode: paired_end</text>
+<g id="node24" class="node">
+<title>23</title>
+<path fill="none" stroke="#d88556" stroke-width="2" d="M1730,-689C1730,-689 1615,-689 1615,-689 1609,-689 1603,-683 1603,-677 1603,-677 1603,-660 1603,-660 1603,-654 1609,-648 1615,-648 1615,-648 1730,-648 1730,-648 1736,-648 1742,-654 1742,-660 1742,-660 1742,-677 1742,-677 1742,-683 1736,-689 1730,-689"/>
+<text text-anchor="middle" x="1672.5" y="-677" font-family="sans" font-size="10.00" fill="#000000">create_index_star</text>
+<text text-anchor="middle" x="1672.5" y="-666" font-family="sans" font-size="10.00" fill="#000000">index_size: 75</text>
+<text text-anchor="middle" x="1672.5" y="-655" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text>
+</g>
+<!-- 23&#45;&gt;2 -->
+<g id="edge23" class="edge">
+<title>23&#45;&gt;2</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.6493,-661.3903C1521.4699,-648.8199 1398.5,-614.5106 1398.5,-522 1398.5,-522 1398.5,-522 1398.5,-450 1398.5,-373.5246 1401.0548,-334.7077 1340.5,-288 1273.9045,-236.6329 1234.9739,-270.718 1148.0991,-251.8284"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1148.6595,-248.3645 1138.1229,-249.4734 1147.0513,-255.1773 1148.6595,-248.3645"/>
+</g>
+<!-- 23&#45;&gt;3 -->
+<g id="edge25" class="edge">
+<title>23&#45;&gt;3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1676.9067,-647.746C1682.5195,-619.4559 1691.5,-567.1388 1691.5,-522 1691.5,-522 1691.5,-522 1691.5,-450 1691.5,-377.278 1708.0836,-349.0052 1668.5,-288 1660.3912,-275.503 1648.2657,-265.3726 1635.6585,-257.408"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1637.288,-254.3056 1626.897,-252.2376 1633.7304,-260.3342 1637.288,-254.3056"/>
+</g>
+<!-- 23&#45;&gt;4 -->
+<g id="edge27" class="edge">
+<title>23&#45;&gt;4</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1668.0933,-647.746C1662.4805,-619.4559 1653.5,-567.1388 1653.5,-522 1653.5,-522 1653.5,-522 1653.5,-450 1653.5,-377.5569 1681.1464,-344.253 1635.5,-288 1634.5861,-286.8737 1574.786,-267.3565 1527.6647,-252.1066"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1528.7214,-248.7699 1518.1296,-249.0229 1526.5674,-255.4303 1528.7214,-248.7699"/>
+</g>
+<!-- 23&#45;&gt;5 -->
+<g id="edge29" class="edge">
+<title>23&#45;&gt;5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1686.2981,-647.6529C1703.1674,-620.1007 1729.5,-569.4869 1729.5,-522 1729.5,-522 1729.5,-522 1729.5,-450 1729.5,-381.628 1711.7328,-302.7182 1701.162,-261.8204"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1704.5161,-260.813 1698.5816,-252.0362 1697.7476,-262.5982 1704.5161,-260.813"/>
+</g>
+<!-- 23&#45;&gt;6 -->
+<g id="edge31" class="edge">
+<title>23&#45;&gt;6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1742.3498,-659.0306C1862.4937,-640.7677 2095.5,-595.8313 2095.5,-522 2095.5,-522 2095.5,-522 2095.5,-378 2095.5,-337.1184 2106.0212,-316.2809 2076.5,-288 2008.4858,-222.8432 1958.3952,-271.5799 1860.9958,-251.757"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1861.6291,-248.3122 1851.1059,-249.5419 1860.0991,-255.143 1861.6291,-248.3122"/>
+</g>
+<!-- 23&#45;&gt;7 -->
+<g id="edge33" class="edge">
+<title>23&#45;&gt;7</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1742.0709,-666.4578C1868.6807,-661.889 2131.3493,-648.2393 2214.5,-612 2270.2287,-587.7119 2317.5,-582.7915 2317.5,-522 2317.5,-522 2317.5,-522 2317.5,-378 2317.5,-335.2408 2309.7232,-321.7741 2283.5,-288 2274.3064,-276.1591 2261.8032,-265.8658 2249.5468,-257.5331"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2251.4389,-254.5886 2241.1447,-252.0825 2247.6292,-260.4611 2251.4389,-254.5886"/>
+</g>
+<!-- 23&#45;&gt;8 -->
+<g id="edge35" class="edge">
+<title>23&#45;&gt;8</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1742.1306,-666.31C1901.5699,-659.4056 2279.5,-631.4918 2279.5,-522 2279.5,-522 2279.5,-522 2279.5,-378 2279.5,-337.1184 2289.1355,-317.1773 2260.5,-288 2248.0604,-275.325 2148.5228,-255.6013 2083.3365,-243.8264"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2083.6488,-240.3266 2073.1881,-242.0071 2082.4136,-247.2168 2083.6488,-240.3266"/>
+</g>
+<!-- 23&#45;&gt;9 -->
+<g id="edge37" class="edge">
+<title>23&#45;&gt;9</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1742.1279,-661.4167C1828.9504,-651.8583 1971.8773,-633.5252 2020.5,-612 2079.2092,-586.0095 2133.5,-586.2049 2133.5,-522 2133.5,-522 2133.5,-522 2133.5,-378 2133.5,-335.3959 2131.7961,-316.9078 2100.5,-288 2058.9952,-249.6626 2031.4221,-267.0868 1972.0222,-251.8949"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1972.781,-248.4731 1962.2086,-249.1632 1970.9037,-255.2167 1972.781,-248.4731"/>
 </g>
-<!-- 22&#45;&gt;23 -->
-<g id="edge46" class="edge"><title>22&#45;&gt;23</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1796.04,-719.697C1805.06,-711.05 1816.12,-700.449 1825.94,-691.027"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1828.37,-693.552 1833.16,-684.104 1823.52,-688.499 1828.37,-693.552"/>
+<!-- 46 -->
+<g id="node47" class="node">
+<title>46</title>
+<path fill="none" stroke="#d87556" stroke-width="2" d="M921,-252C921,-252 824,-252 824,-252 818,-252 812,-246 812,-240 812,-240 812,-228 812,-228 812,-222 818,-216 824,-216 824,-216 921,-216 921,-216 927,-216 933,-222 933,-228 933,-228 933,-240 933,-240 933,-246 927,-252 921,-252"/>
+<text text-anchor="middle" x="872.5" y="-237" font-family="sans" font-size="10.00" fill="#000000">create_index_salmon</text>
+<text text-anchor="middle" x="872.5" y="-226" font-family="sans" font-size="10.00" fill="#000000">kmer: 31</text>
+</g>
+<!-- 23&#45;&gt;46 -->
+<g id="edge82" class="edge">
+<title>23&#45;&gt;46</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.8275,-659.8132C1536.4503,-650.4083 1442.3504,-633.784 1412.5,-612 1375.1836,-584.7675 1360.5,-568.1966 1360.5,-522 1360.5,-522 1360.5,-522 1360.5,-450 1360.5,-412.1224 1338.1827,-310.21 1307.5,-288 1300.1831,-282.7036 1064.3298,-255.5477 943.0419,-241.8796"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="943.4208,-238.4002 933.092,-240.7596 942.6378,-245.3563 943.4208,-238.4002"/>
+</g>
+<!-- 59 -->
+<g id="node60" class="node">
+<title>59</title>
+<path fill="none" stroke="#56d8b9" stroke-width="2" d="M741,-612C741,-612 640,-612 640,-612 634,-612 628,-606 628,-600 628,-600 628,-588 628,-588 628,-582 634,-576 640,-576 640,-576 741,-576 741,-576 747,-576 753,-582 753,-588 753,-588 753,-600 753,-600 753,-606 747,-612 741,-612"/>
+<text text-anchor="middle" x="690.5" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">pe_map_genome_star</text>
+</g>
+<!-- 23&#45;&gt;59 -->
+<g id="edge105" class="edge">
+<title>23&#45;&gt;59</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.6642,-663.2019C1423.0121,-649.5725 946.1608,-613.3959 763.2934,-599.5225"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="763.4771,-596.0265 753.241,-598.7599 762.9475,-603.0064 763.4771,-596.0265"/>
+</g>
+<!-- 62 -->
+<g id="node63" class="node">
+<title>62</title>
+<path fill="none" stroke="#56d8a9" stroke-width="2" d="M1238,-612C1238,-612 1155,-612 1155,-612 1149,-612 1143,-606 1143,-600 1143,-600 1143,-588 1143,-588 1143,-582 1149,-576 1155,-576 1155,-576 1238,-576 1238,-576 1244,-576 1250,-582 1250,-588 1250,-588 1250,-600 1250,-600 1250,-606 1244,-612 1238,-612"/>
+<text text-anchor="middle" x="1196.5" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">map_genome_star</text>
+</g>
+<!-- 23&#45;&gt;62 -->
+<g id="edge108" class="edge">
+<title>23&#45;&gt;62</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.7014,-657.7795C1529.4145,-646.4967 1410.832,-628.165 1308.5,-612 1292.8618,-609.5297 1276.0006,-606.8359 1260.2267,-604.3025"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1260.4706,-600.7968 1250.0418,-602.6648 1259.3593,-607.708 1260.4706,-600.7968"/>
+</g>
+<!-- 64 -->
+<g id="node65" class="node">
+<title>64</title>
+<path fill="none" stroke="#56d86b" stroke-width="2" d="M1320.5,-396C1320.5,-396 1228.5,-396 1228.5,-396 1222.5,-396 1216.5,-390 1216.5,-384 1216.5,-384 1216.5,-372 1216.5,-372 1216.5,-366 1222.5,-360 1228.5,-360 1228.5,-360 1320.5,-360 1320.5,-360 1326.5,-360 1332.5,-366 1332.5,-372 1332.5,-372 1332.5,-384 1332.5,-384 1332.5,-390 1326.5,-396 1320.5,-396"/>
+<text text-anchor="middle" x="1274.5" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">generate_alfa_index</text>
+</g>
+<!-- 23&#45;&gt;64 -->
+<g id="edge111" class="edge">
+<title>23&#45;&gt;64</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1602.9448,-664.838C1518.7744,-659.0115 1383.6827,-644.7404 1346.5,-612 1330.6633,-598.0553 1296.0731,-464.9468 1281.3522,-405.9339"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1284.7293,-405.0101 1278.9239,-396.1474 1277.9353,-406.696 1284.7293,-405.0101"/>
 </g>
-<!-- 31 -->
-<g id="node32" class="node"><title>31</title>
-<path fill="none" stroke="#56d86b" stroke-width="2" d="M1579,-612C1579,-612 1491,-612 1491,-612 1485,-612 1479,-606 1479,-600 1479,-600 1479,-588 1479,-588 1479,-582 1485,-576 1491,-576 1491,-576 1579,-576 1579,-576 1585,-576 1591,-582 1591,-588 1591,-588 1591,-600 1591,-600 1591,-606 1585,-612 1579,-612"/>
-<text text-anchor="middle" x="1535" y="-591.5" font-family="sans" font-size="10.00">calculate_TIN_scores</text>
-</g>
-<!-- 22&#45;&gt;31 -->
-<g id="edge54" class="edge"><title>22&#45;&gt;31</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1762.74,-719.786C1744.5,-700.11 1712.25,-668.045 1679,-648 1654.93,-633.488 1626.23,-621.935 1600.82,-613.367"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1601.85,-610.021 1591.25,-610.229 1599.67,-616.672 1601.85,-610.021"/>
-</g>
-<!-- 23&#45;&gt;13 -->
-<g id="edge30" class="edge"><title>23&#45;&gt;13</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1877.18,-647.876C1891.04,-638.808 1908.24,-627.552 1923.21,-617.759"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1925.27,-620.593 1931.72,-612.19 1921.44,-614.735 1925.27,-620.593"/>
-</g>
-<!-- 23&#45;&gt;31 -->
-<g id="edge55" class="edge"><title>23&#45;&gt;31</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1766.32,-647.996C1717.81,-638.018 1655.86,-624.873 1601,-612 1600.9,-611.976 1600.8,-611.953 1600.7,-611.929"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1601.67,-608.563 1591.13,-609.633 1600.04,-615.37 1601.67,-608.563"/>
-</g>
-<!-- 24&#45;&gt;14 -->
-<g id="edge31" class="edge"><title>24&#45;&gt;14</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1631.68,-722.094C1649.83,-713.907 1668.55,-701.707 1679,-684 1691.28,-663.202 1677.19,-638.237 1662.11,-620.048"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1664.44,-617.398 1655.21,-612.207 1659.19,-622.025 1664.44,-617.398"/>
+<!-- 24 -->
+<g id="node25" class="node">
+<title>24</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M1214.5,-324C1214.5,-324 1148.5,-324 1148.5,-324 1142.5,-324 1136.5,-318 1136.5,-312 1136.5,-312 1136.5,-300 1136.5,-300 1136.5,-294 1142.5,-288 1148.5,-288 1148.5,-288 1214.5,-288 1214.5,-288 1220.5,-288 1226.5,-294 1226.5,-300 1226.5,-300 1226.5,-312 1226.5,-312 1226.5,-318 1220.5,-324 1214.5,-324"/>
+<text text-anchor="middle" x="1181.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
+<text text-anchor="middle" x="1181.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: plus</text>
+</g>
+<!-- 24&#45;&gt;3 -->
+<g id="edge24" class="edge">
+<title>24&#45;&gt;3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1226.688,-290.2113C1229.6527,-289.4008 1232.6083,-288.6534 1235.5,-288 1359.9314,-259.8859 1398.0239,-279.4596 1526.0782,-252.0882"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1526.8448,-255.5034 1535.8636,-249.9436 1525.3462,-248.6656 1526.8448,-255.5034"/>
 </g>
 <!-- 25 -->
-<g id="node26" class="node"><title>25</title>
-<path fill="none" stroke="#56a2d8" stroke-width="2" d="M1658,-684C1658,-684 1508,-684 1508,-684 1502,-684 1496,-678 1496,-672 1496,-672 1496,-660 1496,-660 1496,-654 1502,-648 1508,-648 1508,-648 1658,-648 1658,-648 1664,-648 1670,-654 1670,-660 1670,-660 1670,-672 1670,-672 1670,-678 1664,-684 1658,-684"/>
-<text text-anchor="middle" x="1583" y="-669" font-family="sans" font-size="10.00">index_genomic_alignment_samtools</text>
-<text text-anchor="middle" x="1583" y="-658" font-family="sans" font-size="10.00">seqmode: single_end</text>
-</g>
-<!-- 24&#45;&gt;25 -->
-<g id="edge49" class="edge"><title>24&#45;&gt;25</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1583,-719.697C1583,-711.983 1583,-702.712 1583,-694.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1586.5,-694.104 1583,-684.104 1579.5,-694.104 1586.5,-694.104"/>
-</g>
-<!-- 32 -->
-<g id="node33" class="node"><title>32</title>
-<path fill="none" stroke="#56d86b" stroke-width="2" d="M1449,-612C1449,-612 1361,-612 1361,-612 1355,-612 1349,-606 1349,-600 1349,-600 1349,-588 1349,-588 1349,-582 1355,-576 1361,-576 1361,-576 1449,-576 1449,-576 1455,-576 1461,-582 1461,-588 1461,-588 1461,-600 1461,-600 1461,-606 1455,-612 1449,-612"/>
-<text text-anchor="middle" x="1405" y="-591.5" font-family="sans" font-size="10.00">calculate_TIN_scores</text>
-</g>
-<!-- 24&#45;&gt;32 -->
-<g id="edge57" class="edge"><title>24&#45;&gt;32</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1534.42,-734.18C1466.9,-729.131 1350.04,-715.914 1324,-684 1313.88,-671.604 1316.39,-662.074 1324,-648 1330.82,-635.391 1342.09,-625.3 1354.08,-617.45"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1356.14,-620.294 1362.89,-612.126 1352.52,-614.303 1356.14,-620.294"/>
-</g>
-<!-- 25&#45;&gt;14 -->
-<g id="edge32" class="edge"><title>25&#45;&gt;14</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1596.35,-647.697C1602.76,-639.389 1610.56,-629.277 1617.61,-620.141"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1620.47,-622.16 1623.81,-612.104 1614.93,-617.884 1620.47,-622.16"/>
-</g>
-<!-- 25&#45;&gt;32 -->
-<g id="edge58" class="edge"><title>25&#45;&gt;32</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1539.46,-647.876C1514.8,-638.179 1483.78,-625.98 1457.75,-615.743"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1458.99,-612.471 1448.4,-612.068 1456.43,-618.985 1458.99,-612.471"/>
+<g id="node26" class="node">
+<title>25</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M1106.5,-324C1106.5,-324 1040.5,-324 1040.5,-324 1034.5,-324 1028.5,-318 1028.5,-312 1028.5,-312 1028.5,-300 1028.5,-300 1028.5,-294 1034.5,-288 1040.5,-288 1040.5,-288 1106.5,-288 1106.5,-288 1112.5,-288 1118.5,-294 1118.5,-300 1118.5,-300 1118.5,-312 1118.5,-312 1118.5,-318 1112.5,-324 1106.5,-324"/>
+<text text-anchor="middle" x="1073.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
+<text text-anchor="middle" x="1073.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: minus</text>
+</g>
+<!-- 25&#45;&gt;4 -->
+<g id="edge26" class="edge">
+<title>25&#45;&gt;4</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1118.6893,-290.217C1121.6537,-289.4051 1124.6088,-288.6558 1127.5,-288 1250.1063,-260.1896 1287.6495,-278.8542 1414.8044,-251.8897"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1415.9003,-255.2332 1424.9279,-249.6877 1414.4125,-248.3932 1415.9003,-255.2332"/>
 </g>
 <!-- 26 -->
-<g id="node27" class="node"><title>26</title>
-<path fill="none" stroke="#88d856" stroke-width="2" d="M1905.5,-396C1905.5,-396 1824.5,-396 1824.5,-396 1818.5,-396 1812.5,-390 1812.5,-384 1812.5,-384 1812.5,-372 1812.5,-372 1812.5,-366 1818.5,-360 1824.5,-360 1824.5,-360 1905.5,-360 1905.5,-360 1911.5,-360 1917.5,-366 1917.5,-372 1917.5,-372 1917.5,-384 1917.5,-384 1917.5,-390 1911.5,-396 1905.5,-396"/>
-<text text-anchor="middle" x="1865" y="-375.5" font-family="sans" font-size="10.00">alfa_qc_all_samples</text>
-</g>
-<!-- 26&#45;&gt;15 -->
-<g id="edge33" class="edge"><title>26&#45;&gt;15</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1834.91,-359.876C1818.68,-350.639 1798.46,-339.131 1781.03,-329.212"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1782.63,-326.094 1772.2,-324.19 1779.16,-332.178 1782.63,-326.094"/>
+<g id="node27" class="node">
+<title>26</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M1470.5,-324C1470.5,-324 1404.5,-324 1404.5,-324 1398.5,-324 1392.5,-318 1392.5,-312 1392.5,-312 1392.5,-300 1392.5,-300 1392.5,-294 1398.5,-288 1404.5,-288 1404.5,-288 1470.5,-288 1470.5,-288 1476.5,-288 1482.5,-294 1482.5,-300 1482.5,-300 1482.5,-312 1482.5,-312 1482.5,-318 1476.5,-324 1470.5,-324"/>
+<text text-anchor="middle" x="1437.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
+<text text-anchor="middle" x="1437.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: minus</text>
+</g>
+<!-- 26&#45;&gt;5 -->
+<g id="edge28" class="edge">
+<title>26&#45;&gt;5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1482.7893,-290.6056C1485.7292,-289.6986 1488.6516,-288.822 1491.5,-288 1553.0972,-270.2234 1572.0606,-270.4122 1636.8627,-252.3623"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1638.096,-255.6509 1646.7668,-249.5625 1636.1918,-248.9148 1638.096,-255.6509"/>
 </g>
 <!-- 27 -->
-<g id="node28" class="node"><title>27</title>
-<path fill="none" stroke="#88d856" stroke-width="2" d="M1782.5,-396C1782.5,-396 1701.5,-396 1701.5,-396 1695.5,-396 1689.5,-390 1689.5,-384 1689.5,-384 1689.5,-372 1689.5,-372 1689.5,-366 1695.5,-360 1701.5,-360 1701.5,-360 1782.5,-360 1782.5,-360 1788.5,-360 1794.5,-366 1794.5,-372 1794.5,-372 1794.5,-384 1794.5,-384 1794.5,-390 1788.5,-396 1782.5,-396"/>
-<text text-anchor="middle" x="1742" y="-375.5" font-family="sans" font-size="10.00">alfa_qc_all_samples</text>
-</g>
-<!-- 27&#45;&gt;15 -->
-<g id="edge34" class="edge"><title>27&#45;&gt;15</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1742,-359.697C1742,-351.983 1742,-342.712 1742,-334.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1745.5,-334.104 1742,-324.104 1738.5,-334.104 1745.5,-334.104"/>
+<g id="node28" class="node">
+<title>27</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M1838.5,-324C1838.5,-324 1772.5,-324 1772.5,-324 1766.5,-324 1760.5,-318 1760.5,-312 1760.5,-312 1760.5,-300 1760.5,-300 1760.5,-294 1766.5,-288 1772.5,-288 1772.5,-288 1838.5,-288 1838.5,-288 1844.5,-288 1850.5,-294 1850.5,-300 1850.5,-300 1850.5,-312 1850.5,-312 1850.5,-318 1844.5,-324 1838.5,-324"/>
+<text text-anchor="middle" x="1805.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
+<text text-anchor="middle" x="1805.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: plus</text>
+</g>
+<!-- 27&#45;&gt;6 -->
+<g id="edge30" class="edge">
+<title>27&#45;&gt;6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1805.2477,-287.8314C1805.1407,-280.131 1805.0135,-270.9743 1804.8947,-262.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1808.3944,-262.3637 1804.7557,-252.4133 1801.3951,-262.4609 1808.3944,-262.3637"/>
 </g>
 <!-- 28 -->
-<g id="node29" class="node"><title>28</title>
-<path fill="none" stroke="#d85656" stroke-width="2" d="M1400,-905C1400,-905 1132,-905 1132,-905 1126,-905 1120,-899 1120,-893 1120,-893 1120,-881 1120,-881 1120,-875 1126,-869 1132,-869 1132,-869 1400,-869 1400,-869 1406,-869 1412,-875 1412,-881 1412,-881 1412,-893 1412,-893 1412,-899 1406,-905 1400,-905"/>
-<text text-anchor="middle" x="1266" y="-890" font-family="sans" font-size="10.00">pe_remove_adapters_cutadapt</text>
-<text text-anchor="middle" x="1266" y="-879" font-family="sans" font-size="10.00">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text>
-</g>
-<!-- 28&#45;&gt;16 -->
-<g id="edge35" class="edge"><title>28&#45;&gt;16</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1266,-868.819C1266,-860.422 1266,-850.116 1266,-840.686"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1269.5,-840.558 1266,-830.558 1262.5,-840.558 1269.5,-840.558"/>
+<g id="node29" class="node">
+<title>28</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M2239.5,-324C2239.5,-324 2173.5,-324 2173.5,-324 2167.5,-324 2161.5,-318 2161.5,-312 2161.5,-312 2161.5,-300 2161.5,-300 2161.5,-294 2167.5,-288 2173.5,-288 2173.5,-288 2239.5,-288 2239.5,-288 2245.5,-288 2251.5,-294 2251.5,-300 2251.5,-300 2251.5,-312 2251.5,-312 2251.5,-318 2245.5,-324 2239.5,-324"/>
+<text text-anchor="middle" x="2206.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
+<text text-anchor="middle" x="2206.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: plus</text>
+</g>
+<!-- 28&#45;&gt;7 -->
+<g id="edge32" class="edge">
+<title>28&#45;&gt;7</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M2206.5,-287.8314C2206.5,-280.131 2206.5,-270.9743 2206.5,-262.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2210.0001,-262.4132 2206.5,-252.4133 2203.0001,-262.4133 2210.0001,-262.4132"/>
 </g>
 <!-- 29 -->
-<g id="node30" class="node"><title>29</title>
-<path fill="none" stroke="#56d88a" stroke-width="2" d="M1106.5,-612C1106.5,-612 1005.5,-612 1005.5,-612 999.5,-612 993.5,-606 993.5,-600 993.5,-600 993.5,-588 993.5,-588 993.5,-582 999.5,-576 1005.5,-576 1005.5,-576 1106.5,-576 1106.5,-576 1112.5,-576 1118.5,-582 1118.5,-588 1118.5,-588 1118.5,-600 1118.5,-600 1118.5,-606 1112.5,-612 1106.5,-612"/>
-<text text-anchor="middle" x="1056" y="-597" font-family="sans" font-size="10.00">extract_transcriptome</text>
-<text text-anchor="middle" x="1056" y="-586" font-family="sans" font-size="10.00">organism: homo_sapiens</text>
-</g>
-<!-- 29&#45;&gt;17 -->
-<g id="edge36" class="edge"><title>29&#45;&gt;17</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1078.25,-575.697C1089.58,-566.881 1103.53,-556.032 1115.82,-546.474"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1118.26,-549.007 1124.01,-540.104 1113.97,-543.481 1118.26,-549.007"/>
-</g>
-<!-- 40 -->
-<g id="node41" class="node"><title>40</title>
-<path fill="none" stroke="#d8a456" stroke-width="2" d="M1061.5,-540C1061.5,-540 890.5,-540 890.5,-540 884.5,-540 878.5,-534 878.5,-528 878.5,-528 878.5,-516 878.5,-516 878.5,-510 884.5,-504 890.5,-504 890.5,-504 1061.5,-504 1061.5,-504 1067.5,-504 1073.5,-510 1073.5,-516 1073.5,-516 1073.5,-528 1073.5,-528 1073.5,-534 1067.5,-540 1061.5,-540"/>
-<text text-anchor="middle" x="976" y="-519.5" font-family="sans" font-size="10.00">concatenate_transcriptome_and_genome</text>
-</g>
-<!-- 29&#45;&gt;40 -->
-<g id="edge70" class="edge"><title>29&#45;&gt;40</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1036.22,-575.697C1026.25,-566.965 1013.99,-556.24 1003.14,-546.75"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1005.38,-544.055 995.548,-540.104 1000.77,-549.323 1005.38,-544.055"/>
+<g id="node30" class="node">
+<title>29</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M2055.5,-324C2055.5,-324 1989.5,-324 1989.5,-324 1983.5,-324 1977.5,-318 1977.5,-312 1977.5,-312 1977.5,-300 1977.5,-300 1977.5,-294 1983.5,-288 1989.5,-288 1989.5,-288 2055.5,-288 2055.5,-288 2061.5,-288 2067.5,-294 2067.5,-300 2067.5,-300 2067.5,-312 2067.5,-312 2067.5,-318 2061.5,-324 2055.5,-324"/>
+<text text-anchor="middle" x="2022.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
+<text text-anchor="middle" x="2022.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: minus</text>
+</g>
+<!-- 29&#45;&gt;8 -->
+<g id="edge34" class="edge">
+<title>29&#45;&gt;8</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M2023.5094,-287.8314C2023.9372,-280.131 2024.4459,-270.9743 2024.9213,-262.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2028.4169,-262.592 2025.477,-252.4133 2021.4276,-262.2037 2028.4169,-262.592"/>
 </g>
 <!-- 30 -->
-<g id="node31" class="node"><title>30</title>
-<path fill="none" stroke="#56b1d8" stroke-width="2" d="M847,-905C847,-905 567,-905 567,-905 561,-905 555,-899 555,-893 555,-893 555,-881 555,-881 555,-875 561,-869 567,-869 567,-869 847,-869 847,-869 853,-869 859,-875 859,-881 859,-881 859,-893 859,-893 859,-899 853,-905 847,-905"/>
-<text text-anchor="middle" x="707" y="-890" font-family="sans" font-size="10.00">remove_adapters_cutadapt</text>
-<text text-anchor="middle" x="707" y="-879" font-family="sans" font-size="10.00">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text>
-</g>
-<!-- 30&#45;&gt;18 -->
-<g id="edge37" class="edge"><title>30&#45;&gt;18</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M707,-868.819C707,-860.422 707,-850.116 707,-840.686"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="710.5,-840.558 707,-830.558 703.5,-840.558 710.5,-840.558"/>
-</g>
-<!-- 31&#45;&gt;19 -->
-<g id="edge38" class="edge"><title>31&#45;&gt;19</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1504.91,-575.876C1488.68,-566.639 1468.46,-555.131 1451.03,-545.212"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1452.63,-542.094 1442.2,-540.19 1449.16,-548.178 1452.63,-542.094"/>
-</g>
-<!-- 32&#45;&gt;19 -->
-<g id="edge39" class="edge"><title>32&#45;&gt;19</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1406.73,-575.697C1407.5,-567.983 1408.43,-558.712 1409.29,-550.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1412.78,-550.403 1410.29,-540.104 1405.81,-549.706 1412.78,-550.403"/>
+<g id="node31" class="node">
+<title>30</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M1947.5,-324C1947.5,-324 1881.5,-324 1881.5,-324 1875.5,-324 1869.5,-318 1869.5,-312 1869.5,-312 1869.5,-300 1869.5,-300 1869.5,-294 1875.5,-288 1881.5,-288 1881.5,-288 1947.5,-288 1947.5,-288 1953.5,-288 1959.5,-294 1959.5,-300 1959.5,-300 1959.5,-312 1959.5,-312 1959.5,-318 1953.5,-324 1947.5,-324"/>
+<text text-anchor="middle" x="1914.5" y="-309" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
+<text text-anchor="middle" x="1914.5" y="-298" font-family="sans" font-size="10.00" fill="#000000">strand: minus</text>
+</g>
+<!-- 30&#45;&gt;9 -->
+<g id="edge36" class="edge">
+<title>30&#45;&gt;9</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1914.7523,-287.8314C1914.8593,-280.131 1914.9865,-270.9743 1915.1053,-262.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1918.6049,-262.4609 1915.2443,-252.4133 1911.6056,-262.3637 1918.6049,-262.4609"/>
 </g>
-<!-- 33 -->
-<g id="node34" class="node"><title>33</title>
-<path fill="none" stroke="#56d8c9" stroke-width="2" d="M979.5,-468C979.5,-468 894.5,-468 894.5,-468 888.5,-468 882.5,-462 882.5,-456 882.5,-456 882.5,-444 882.5,-444 882.5,-438 888.5,-432 894.5,-432 894.5,-432 979.5,-432 979.5,-432 985.5,-432 991.5,-438 991.5,-444 991.5,-444 991.5,-456 991.5,-456 991.5,-462 985.5,-468 979.5,-468"/>
-<text text-anchor="middle" x="937" y="-447.5" font-family="sans" font-size="10.00">create_index_salmon</text>
+<!-- 31 -->
+<g id="node32" class="node">
+<title>31</title>
+<path fill="none" stroke="#d89556" stroke-width="2" d="M941.5,-180C941.5,-180 823.5,-180 823.5,-180 817.5,-180 811.5,-174 811.5,-168 811.5,-168 811.5,-156 811.5,-156 811.5,-150 817.5,-144 823.5,-144 823.5,-144 941.5,-144 941.5,-144 947.5,-144 953.5,-150 953.5,-156 953.5,-156 953.5,-168 953.5,-168 953.5,-174 947.5,-180 941.5,-180"/>
+<text text-anchor="middle" x="882.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">pe_quantification_salmon</text>
+</g>
+<!-- 31&#45;&gt;10 -->
+<g id="edge38" class="edge">
+<title>31&#45;&gt;10</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M838.3401,-143.8314C814.7268,-134.1162 785.4798,-122.0831 760.63,-111.8592"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="761.9219,-108.6061 751.3423,-108.038 759.2585,-115.0797 761.9219,-108.6061"/>
+</g>
+<!-- 31&#45;&gt;11 -->
+<g id="edge40" class="edge">
+<title>31&#45;&gt;11</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M882.5,-143.8314C882.5,-136.131 882.5,-126.9743 882.5,-118.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="886.0001,-118.4132 882.5,-108.4133 879.0001,-118.4133 886.0001,-118.4132"/>
+</g>
+<!-- 31&#45;&gt;12 -->
+<g id="edge42" class="edge">
+<title>31&#45;&gt;12</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M929.4357,-143.8314C954.6437,-134.0734 985.8926,-121.977 1012.3791,-111.7242"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1013.8397,-114.912 1021.9019,-108.038 1011.3127,-108.384 1013.8397,-114.912"/>
+</g>
+<!-- 31&#45;&gt;13 -->
+<g id="edge44" class="edge">
+<title>31&#45;&gt;13</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M953.5828,-146.029C956.9328,-145.3314 960.2514,-144.6516 963.5,-144 1049.3543,-126.7799 1073.5509,-124.5084 1163.3062,-108.2054"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1164.1757,-111.6046 1173.3848,-106.366 1162.9189,-104.7184 1164.1757,-111.6046"/>
 </g>
-<!-- 33&#45;&gt;20 -->
-<g id="edge41" class="edge"><title>33&#45;&gt;20</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M966.355,-431.876C982.045,-422.724 1001.56,-411.342 1018.45,-401.485"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1020.66,-404.252 1027.53,-396.19 1017.13,-398.205 1020.66,-404.252"/>
+<!-- 32 -->
+<g id="node33" class="node">
+<title>32</title>
+<path fill="none" stroke="#5663d8" stroke-width="2" d="M1085,-180C1085,-180 984,-180 984,-180 978,-180 972,-174 972,-168 972,-168 972,-156 972,-156 972,-150 978,-144 984,-144 984,-144 1085,-144 1085,-144 1091,-144 1097,-150 1097,-156 1097,-156 1097,-168 1097,-168 1097,-174 1091,-180 1085,-180"/>
+<text text-anchor="middle" x="1034.5" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">quantification_salmon</text>
+</g>
+<!-- 32&#45;&gt;10 -->
+<g id="edge39" class="edge">
+<title>32&#45;&gt;10</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M971.7037,-146.1584C968.5941,-145.4187 965.5131,-144.6954 962.5,-144 945.9258,-140.1746 860.8578,-122.2153 793.4697,-108.0441"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="794.1719,-104.6153 783.6657,-105.9829 792.7316,-111.4656 794.1719,-104.6153"/>
+</g>
+<!-- 32&#45;&gt;11 -->
+<g id="edge41" class="edge">
+<title>32&#45;&gt;11</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M996.144,-143.8314C975.9956,-134.2874 951.1248,-122.5065 929.7917,-112.4013"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="931.1159,-109.1558 920.5802,-108.038 928.1193,-115.482 931.1159,-109.1558"/>
+</g>
+<!-- 32&#45;&gt;12 -->
+<g id="edge43" class="edge">
+<title>32&#45;&gt;12</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1043.0796,-143.8314C1046.8358,-135.8771 1051.3257,-126.369 1055.4798,-117.5723"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1058.6996,-118.9503 1059.8048,-108.4133 1052.3699,-115.9612 1058.6996,-118.9503"/>
+</g>
+<!-- 32&#45;&gt;13 -->
+<g id="edge45" class="edge">
+<title>32&#45;&gt;13</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1091.2376,-143.9243C1122.4018,-133.9959 1161.2311,-121.6255 1193.8356,-111.2382"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1195.2733,-114.4536 1203.739,-108.0831 1193.1484,-107.7839 1195.2733,-114.4536"/>
 </g>
-<!-- 33&#45;&gt;21 -->
-<g id="edge43" class="edge"><title>33&#45;&gt;21</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M929.09,-431.697C925.447,-423.728 921.046,-414.1 917.006,-405.264"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="920.16,-403.744 912.819,-396.104 913.794,-406.654 920.16,-403.744"/>
+<!-- 33 -->
+<g id="node34" class="node">
+<title>33</title>
+<path fill="none" stroke="#56d8d8" stroke-width="2" d="M313,-838C313,-838 12,-838 12,-838 6,-838 0,-832 0,-826 0,-826 0,-809 0,-809 0,-803 6,-797 12,-797 12,-797 313,-797 313,-797 319,-797 325,-803 325,-809 325,-809 325,-826 325,-826 325,-832 319,-838 313,-838"/>
+<text text-anchor="middle" x="162.5" y="-826" font-family="sans" font-size="10.00" fill="#000000">start</text>
+<text text-anchor="middle" x="162.5" y="-815" font-family="sans" font-size="10.00" fill="#000000">mate: fq1</text>
+<text text-anchor="middle" x="162.5" y="-804" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text>
+</g>
+<!-- 33&#45;&gt;14 -->
+<g id="edge46" class="edge">
+<title>33&#45;&gt;14</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M162.4077,-796.8743C162.2278,-756.6563 161.8298,-667.7154 161.6259,-622.1329"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="165.1256,-622.0376 161.5808,-612.0534 158.1257,-622.069 165.1256,-622.0376"/>
+</g>
+<!-- 47 -->
+<g id="node48" class="node">
+<title>47</title>
+<path fill="none" stroke="#d8ac56" stroke-width="2" d="M409,-761C409,-761 266,-761 266,-761 260,-761 254,-755 254,-749 254,-749 254,-737 254,-737 254,-731 260,-725 266,-725 266,-725 409,-725 409,-725 415,-725 421,-731 421,-737 421,-737 421,-749 421,-749 421,-755 415,-761 409,-761"/>
+<text text-anchor="middle" x="337.5" y="-740.5" font-family="sans" font-size="10.00" fill="#000000">pe_remove_adapters_cutadapt</text>
+</g>
+<!-- 33&#45;&gt;47 -->
+<g id="edge83" class="edge">
+<title>33&#45;&gt;47</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M210.7828,-796.9453C234.0937,-787.0215 262.0869,-775.1044 285.827,-764.9979"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="287.2053,-768.2152 295.0353,-761.0778 284.4634,-761.7745 287.2053,-768.2152"/>
 </g>
 <!-- 34 -->
-<g id="node35" class="node"><title>34</title>
-<path fill="none" stroke="#70d856" stroke-width="2" d="M1828.5,-833C1828.5,-833 1727.5,-833 1727.5,-833 1721.5,-833 1715.5,-827 1715.5,-821 1715.5,-821 1715.5,-804 1715.5,-804 1715.5,-798 1721.5,-792 1727.5,-792 1727.5,-792 1828.5,-792 1828.5,-792 1834.5,-792 1840.5,-798 1840.5,-804 1840.5,-804 1840.5,-821 1840.5,-821 1840.5,-827 1834.5,-833 1828.5,-833"/>
-<text text-anchor="middle" x="1778" y="-821" font-family="sans" font-size="10.00">create_index_star</text>
-<text text-anchor="middle" x="1778" y="-810" font-family="sans" font-size="10.00">index_size: 75</text>
-<text text-anchor="middle" x="1778" y="-799" font-family="sans" font-size="10.00">organism: homo_sapiens</text>
-</g>
-<!-- 34&#45;&gt;22 -->
-<g id="edge44" class="edge"><title>34&#45;&gt;22</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1778,-791.689C1778,-783.907 1778,-774.842 1778,-766.447"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1781.5,-766.319 1778,-756.319 1774.5,-766.32 1781.5,-766.319"/>
-</g>
-<!-- 34&#45;&gt;24 -->
-<g id="edge47" class="edge"><title>34&#45;&gt;24</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1725.49,-791.976C1698.54,-781.959 1665.73,-769.76 1638.39,-759.594"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1639.56,-756.294 1628.96,-756.09 1637.12,-762.855 1639.56,-756.294"/>
-</g>
-<!-- 43 -->
-<g id="node44" class="node"><title>43</title>
-<path fill="none" stroke="#5682d8" stroke-width="2" d="M2054,-540C2054,-540 1974,-540 1974,-540 1968,-540 1962,-534 1962,-528 1962,-528 1962,-516 1962,-516 1962,-510 1968,-504 1974,-504 1974,-504 2054,-504 2054,-504 2060,-504 2066,-510 2066,-516 2066,-516 2066,-528 2066,-528 2066,-534 2060,-540 2054,-540"/>
-<text text-anchor="middle" x="2014" y="-519.5" font-family="sans" font-size="10.00">generate_alfa_index</text>
-</g>
-<!-- 34&#45;&gt;43 -->
-<g id="edge72" class="edge"><title>34&#45;&gt;43</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1821.52,-791.833C1863.92,-770.678 1927.59,-733.322 1967,-684 1998.41,-644.69 2008.83,-585.094 2012.29,-550.508"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="2015.8,-550.48 2013.18,-540.215 2008.83,-549.874 2015.8,-550.48"/>
+<g id="node35" class="node">
+<title>34</title>
+<path fill="none" stroke="#56d8d8" stroke-width="2" d="M676,-838C676,-838 363,-838 363,-838 357,-838 351,-832 351,-826 351,-826 351,-809 351,-809 351,-803 357,-797 363,-797 363,-797 676,-797 676,-797 682,-797 688,-803 688,-809 688,-809 688,-826 688,-826 688,-832 682,-838 676,-838"/>
+<text text-anchor="middle" x="519.5" y="-826" font-family="sans" font-size="10.00" fill="#000000">start</text>
+<text text-anchor="middle" x="519.5" y="-815" font-family="sans" font-size="10.00" fill="#000000">mate: fq1</text>
+<text text-anchor="middle" x="519.5" y="-804" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text>
+</g>
+<!-- 34&#45;&gt;15 -->
+<g id="edge47" class="edge">
+<title>34&#45;&gt;15</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M350.662,-797.1539C304.1026,-788.4729 261.6457,-776.6476 244.5,-761 226.6642,-744.7226 220.0329,-717.5137 217.6452,-696.808"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="221.1155,-696.3174 216.7465,-686.6654 214.1429,-696.9353 221.1155,-696.3174"/>
+</g>
+<!-- 49 -->
+<g id="node50" class="node">
+<title>49</title>
+<path fill="none" stroke="#56d85b" stroke-width="2" d="M583.5,-761C583.5,-761 457.5,-761 457.5,-761 451.5,-761 445.5,-755 445.5,-749 445.5,-749 445.5,-737 445.5,-737 445.5,-731 451.5,-725 457.5,-725 457.5,-725 583.5,-725 583.5,-725 589.5,-725 595.5,-731 595.5,-737 595.5,-737 595.5,-749 595.5,-749 595.5,-755 589.5,-761 583.5,-761"/>
+<text text-anchor="middle" x="520.5" y="-740.5" font-family="sans" font-size="10.00" fill="#000000">remove_adapters_cutadapt</text>
+</g>
+<!-- 34&#45;&gt;49 -->
+<g id="edge85" class="edge">
+<title>34&#45;&gt;49</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M519.7786,-796.7476C519.8842,-788.8767 520.0064,-779.7743 520.1198,-771.3232"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="523.6223,-771.1548 520.2569,-761.1087 516.6229,-771.0608 523.6223,-771.1548"/>
 </g>
 <!-- 35 -->
-<g id="node36" class="node"><title>35</title>
-<path fill="none" stroke="#d8cb56" stroke-width="2" d="M2029,-468C2029,-468 1999,-468 1999,-468 1993,-468 1987,-462 1987,-456 1987,-456 1987,-444 1987,-444 1987,-438 1993,-432 1999,-432 1999,-432 2029,-432 2029,-432 2035,-432 2041,-438 2041,-444 2041,-444 2041,-456 2041,-456 2041,-462 2035,-468 2029,-468"/>
-<text text-anchor="middle" x="2014" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text>
-</g>
-<!-- 35&#45;&gt;26 -->
-<g id="edge50" class="edge"><title>35&#45;&gt;26</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1986.67,-436.161C1965.44,-426.186 1935.53,-412.133 1910.67,-400.456"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1911.96,-397.196 1901.42,-396.111 1908.99,-403.531 1911.96,-397.196"/>
+<g id="node36" class="node">
+<title>35</title>
+<path fill="none" stroke="#56d8d8" stroke-width="2" d="M1070,-838C1070,-838 769,-838 769,-838 763,-838 757,-832 757,-826 757,-826 757,-809 757,-809 757,-803 763,-797 769,-797 769,-797 1070,-797 1070,-797 1076,-797 1082,-803 1082,-809 1082,-809 1082,-826 1082,-826 1082,-832 1076,-838 1070,-838"/>
+<text text-anchor="middle" x="919.5" y="-826" font-family="sans" font-size="10.00" fill="#000000">start</text>
+<text text-anchor="middle" x="919.5" y="-815" font-family="sans" font-size="10.00" fill="#000000">mate: fq2</text>
+<text text-anchor="middle" x="919.5" y="-804" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text>
+</g>
+<!-- 35&#45;&gt;16 -->
+<g id="edge48" class="edge">
+<title>35&#45;&gt;16</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M947.3661,-796.9453C959.8194,-787.7594 974.5882,-776.8656 987.5823,-767.2809"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="989.853,-769.9552 995.8229,-761.2024 985.6977,-764.3219 989.853,-769.9552"/>
+</g>
+<!-- 35&#45;&gt;47 -->
+<g id="edge84" class="edge">
+<title>35&#45;&gt;47</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M756.7818,-801.0648C662.9526,-790.9385 542.8595,-776.8736 436.5,-761 434.7776,-760.7429 433.0392,-760.4786 431.2887,-760.208"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="431.5834,-756.7109 421.1575,-758.5954 430.483,-763.6239 431.5834,-756.7109"/>
 </g>
 <!-- 36 -->
-<g id="node37" class="node"><title>36</title>
-<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1854,-468C1854,-468 1824,-468 1824,-468 1818,-468 1812,-462 1812,-456 1812,-456 1812,-444 1812,-444 1812,-438 1818,-432 1824,-432 1824,-432 1854,-432 1854,-432 1860,-432 1866,-438 1866,-444 1866,-444 1866,-456 1866,-456 1866,-462 1860,-468 1854,-468"/>
-<text text-anchor="middle" x="1839" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text>
-</g>
-<!-- 36&#45;&gt;26 -->
-<g id="edge51" class="edge"><title>36&#45;&gt;26</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1845.43,-431.697C1848.36,-423.813 1851.89,-414.304 1855.14,-405.546"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1858.45,-406.697 1858.65,-396.104 1851.88,-404.26 1858.45,-406.697"/>
+<g id="node37" class="node">
+<title>36</title>
+<path fill="none" stroke="#56d8c9" stroke-width="2" d="M401.5,-686.5C401.5,-686.5 273.5,-686.5 273.5,-686.5 267.5,-686.5 261.5,-680.5 261.5,-674.5 261.5,-674.5 261.5,-662.5 261.5,-662.5 261.5,-656.5 267.5,-650.5 273.5,-650.5 273.5,-650.5 401.5,-650.5 401.5,-650.5 407.5,-650.5 413.5,-656.5 413.5,-662.5 413.5,-662.5 413.5,-674.5 413.5,-674.5 413.5,-680.5 407.5,-686.5 401.5,-686.5"/>
+<text text-anchor="middle" x="337.5" y="-666" font-family="sans" font-size="10.00" fill="#000000">pe_remove_polya_cutadapt</text>
+</g>
+<!-- 36&#45;&gt;17 -->
+<g id="edge49" class="edge">
+<title>36&#45;&gt;17</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M327.9567,-650.0941C314.7473,-622.8634 292.5,-569.8923 292.5,-522 292.5,-522 292.5,-522 292.5,-378 292.5,-337.1184 290.5164,-323.0856 311.5,-288 318.2711,-276.6784 328.2832,-266.5982 338.3879,-258.3019"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="340.6991,-260.9385 346.4513,-252.0412 336.4062,-255.4094 340.6991,-260.9385"/>
+</g>
+<!-- 36&#45;&gt;31 -->
+<g id="edge64" class="edge">
+<title>36&#45;&gt;31</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M319.0796,-650.4784C294.6271,-624.5348 254.5,-574.0336 254.5,-522 254.5,-522 254.5,-522 254.5,-306 254.5,-265.2078 241.9874,-243.0737 272.5,-216 310.8481,-181.974 681.4824,-185.0552 732.5,-180 754.7947,-177.7909 778.9112,-175.052 801.1518,-172.3828"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="801.7182,-175.8399 811.2251,-171.1635 800.877,-168.8906 801.7182,-175.8399"/>
+</g>
+<!-- 36&#45;&gt;59 -->
+<g id="edge106" class="edge">
+<title>36&#45;&gt;59</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M413.6611,-652.4263C474.1098,-639.6688 558.0713,-621.9488 617.6412,-609.3767"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="618.6639,-612.7381 627.7256,-607.2484 617.2184,-605.8889 618.6639,-612.7381"/>
 </g>
 <!-- 37 -->
-<g id="node38" class="node"><title>37</title>
-<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1926,-468C1926,-468 1896,-468 1896,-468 1890,-468 1884,-462 1884,-456 1884,-456 1884,-444 1884,-444 1884,-438 1890,-432 1896,-432 1896,-432 1926,-432 1926,-432 1932,-432 1938,-438 1938,-444 1938,-444 1938,-456 1938,-456 1938,-462 1932,-468 1926,-468"/>
-<text text-anchor="middle" x="1911" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text>
-</g>
-<!-- 37&#45;&gt;27 -->
-<g id="edge52" class="edge"><title>37&#45;&gt;27</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1883.96,-436.009C1880.95,-434.629 1877.92,-433.268 1875,-432 1849.34,-420.843 1820.54,-409.251 1796.31,-399.763"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1797.51,-396.475 1786.92,-396.102 1794.97,-402.997 1797.51,-396.475"/>
+<g id="node38" class="node">
+<title>37</title>
+<path fill="none" stroke="#88d856" stroke-width="2" d="M430,-324C430,-324 333,-324 333,-324 327,-324 321,-318 321,-312 321,-312 321,-300 321,-300 321,-294 327,-288 333,-288 333,-288 430,-288 430,-288 436,-288 442,-294 442,-300 442,-300 442,-312 442,-312 442,-318 436,-324 430,-324"/>
+<text text-anchor="middle" x="381.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">create_index_kallisto</text>
+</g>
+<!-- 37&#45;&gt;17 -->
+<g id="edge50" class="edge">
+<title>37&#45;&gt;17</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M379.9859,-287.8314C379.3442,-280.131 378.5812,-270.9743 377.8681,-262.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="381.3529,-262.088 377.0344,-252.4133 374.3771,-262.6694 381.3529,-262.088"/>
+</g>
+<!-- 37&#45;&gt;18 -->
+<g id="edge52" class="edge">
+<title>37&#45;&gt;18</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M429.6974,-287.8314C455.6966,-278.0306 487.9536,-265.8709 515.2281,-255.5894"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="516.5266,-258.8404 524.6492,-252.038 514.0574,-252.2904 516.5266,-258.8404"/>
 </g>
 <!-- 38 -->
-<g id="node39" class="node"><title>38</title>
-<path fill="none" stroke="#d8cb56" stroke-width="2" d="M1757,-468C1757,-468 1727,-468 1727,-468 1721,-468 1715,-462 1715,-456 1715,-456 1715,-444 1715,-444 1715,-438 1721,-432 1727,-432 1727,-432 1757,-432 1757,-432 1763,-432 1769,-438 1769,-444 1769,-444 1769,-456 1769,-456 1769,-462 1763,-468 1757,-468"/>
-<text text-anchor="middle" x="1742" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text>
-</g>
-<!-- 38&#45;&gt;27 -->
-<g id="edge53" class="edge"><title>38&#45;&gt;27</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1742,-431.697C1742,-423.983 1742,-414.712 1742,-406.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1745.5,-406.104 1742,-396.104 1738.5,-406.104 1745.5,-406.104"/>
+<g id="node39" class="node">
+<title>38</title>
+<path fill="none" stroke="#c6d856" stroke-width="2" d="M577.5,-686.5C577.5,-686.5 467.5,-686.5 467.5,-686.5 461.5,-686.5 455.5,-680.5 455.5,-674.5 455.5,-674.5 455.5,-662.5 455.5,-662.5 455.5,-656.5 461.5,-650.5 467.5,-650.5 467.5,-650.5 577.5,-650.5 577.5,-650.5 583.5,-650.5 589.5,-656.5 589.5,-662.5 589.5,-662.5 589.5,-674.5 589.5,-674.5 589.5,-680.5 583.5,-686.5 577.5,-686.5"/>
+<text text-anchor="middle" x="522.5" y="-666" font-family="sans" font-size="10.00" fill="#000000">remove_polya_cutadapt</text>
+</g>
+<!-- 38&#45;&gt;18 -->
+<g id="edge51" class="edge">
+<title>38&#45;&gt;18</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M515.4552,-650.314C505.4964,-622.9252 488.5,-569.2591 488.5,-522 488.5,-522 488.5,-522 488.5,-450 488.5,-377.9986 454.9753,-351.1842 489.5,-288 496.3321,-275.4964 507.4404,-265.4289 519.3399,-257.5306"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="521.4015,-260.372 528.0945,-252.159 517.7406,-254.4056 521.4015,-260.372"/>
+</g>
+<!-- 38&#45;&gt;32 -->
+<g id="edge66" class="edge">
+<title>38&#45;&gt;32</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M525.0999,-650.0328C530.2013,-618.2821 543.6371,-552.1246 572.5,-504 651.0069,-373.1014 700.9451,-352.0338 839.5,-288 883.5197,-267.6561 901.2938,-277.5667 942.5,-252 970.2007,-234.8129 996.2093,-207.9838 1013.4571,-188.0855"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1016.2642,-190.187 1020.0688,-180.2988 1010.9283,-185.6562 1016.2642,-190.187"/>
+</g>
+<!-- 38&#45;&gt;62 -->
+<g id="edge109" class="edge">
+<title>38&#45;&gt;62</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M589.5898,-661.0843C719.7521,-646.6969 1004.9461,-615.1732 1132.5611,-601.0674"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1133.0212,-604.538 1142.5761,-599.9604 1132.2521,-597.5804 1133.0212,-604.538"/>
 </g>
 <!-- 39 -->
-<g id="node40" class="node"><title>39</title>
-<path fill="none" stroke="#5692d8" stroke-width="2" d="M1465.5,-684C1465.5,-684 1344.5,-684 1344.5,-684 1338.5,-684 1332.5,-678 1332.5,-672 1332.5,-672 1332.5,-660 1332.5,-660 1332.5,-654 1338.5,-648 1344.5,-648 1344.5,-648 1465.5,-648 1465.5,-648 1471.5,-648 1477.5,-654 1477.5,-660 1477.5,-660 1477.5,-672 1477.5,-672 1477.5,-678 1471.5,-684 1465.5,-684"/>
-<text text-anchor="middle" x="1405" y="-663.5" font-family="sans" font-size="10.00">extract_transcripts_as_bed12</text>
+<g id="node40" class="node">
+<title>39</title>
+<path fill="none" stroke="#56c1d8" stroke-width="2" d="M820,-396C820,-396 737,-396 737,-396 731,-396 725,-390 725,-384 725,-384 725,-372 725,-372 725,-366 731,-360 737,-360 737,-360 820,-360 820,-360 826,-360 832,-366 832,-372 832,-372 832,-384 832,-384 832,-390 826,-396 820,-396"/>
+<text text-anchor="middle" x="778.5" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">merge_TIN_scores</text>
 </g>
-<!-- 39&#45;&gt;31 -->
-<g id="edge56" class="edge"><title>39&#45;&gt;31</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1436.8,-647.876C1454.11,-638.554 1475.72,-626.919 1494.26,-616.939"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1495.93,-620.012 1503.08,-612.19 1492.61,-613.849 1495.93,-620.012"/>
+<!-- 39&#45;&gt;19 -->
+<g id="edge53" class="edge">
+<title>39&#45;&gt;19</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M769.979,-359.9555C752.0915,-322.0762 710.5386,-234.0818 689.3794,-189.274"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="692.5035,-187.693 685.0685,-180.1451 686.1737,-190.6821 692.5035,-187.693"/>
 </g>
-<!-- 39&#45;&gt;32 -->
-<g id="edge59" class="edge"><title>39&#45;&gt;32</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1405,-647.697C1405,-639.983 1405,-630.712 1405,-622.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1408.5,-622.104 1405,-612.104 1401.5,-622.104 1408.5,-622.104"/>
+<!-- 40 -->
+<g id="node41" class="node">
+<title>40</title>
+<path fill="none" stroke="#56b1d8" stroke-width="2" d="M1260.5,-252C1260.5,-252 1168.5,-252 1168.5,-252 1162.5,-252 1156.5,-246 1156.5,-240 1156.5,-240 1156.5,-228 1156.5,-228 1156.5,-222 1162.5,-216 1168.5,-216 1168.5,-216 1260.5,-216 1260.5,-216 1266.5,-216 1272.5,-222 1272.5,-228 1272.5,-228 1272.5,-240 1272.5,-240 1272.5,-246 1266.5,-252 1260.5,-252"/>
+<text text-anchor="middle" x="1214.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc_all_samples</text>
 </g>
-<!-- 40&#45;&gt;33 -->
-<g id="edge60" class="edge"><title>40&#45;&gt;33</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M966.36,-503.697C961.873,-495.644 956.441,-485.894 951.476,-476.982"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="954.454,-475.137 946.53,-468.104 948.339,-478.544 954.454,-475.137"/>
+<!-- 40&#45;&gt;20 -->
+<g id="edge54" class="edge">
+<title>40&#45;&gt;20</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1253.3607,-215.8314C1273.7742,-206.2874 1298.9723,-194.5065 1320.586,-184.4013"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1322.3423,-187.4439 1329.9187,-180.038 1319.3775,-181.1027 1322.3423,-187.4439"/>
 </g>
 <!-- 41 -->
-<g id="node42" class="node"><title>41</title>
-<path fill="none" stroke="#d8ac56" stroke-width="2" d="M848.5,-540C848.5,-540 747.5,-540 747.5,-540 741.5,-540 735.5,-534 735.5,-528 735.5,-528 735.5,-516 735.5,-516 735.5,-510 741.5,-504 747.5,-504 747.5,-504 848.5,-504 848.5,-504 854.5,-504 860.5,-510 860.5,-516 860.5,-516 860.5,-528 860.5,-528 860.5,-534 854.5,-540 848.5,-540"/>
-<text text-anchor="middle" x="798" y="-525" font-family="sans" font-size="10.00">extract_decoys_salmon</text>
-<text text-anchor="middle" x="798" y="-514" font-family="sans" font-size="10.00">organism: homo_sapiens</text>
-</g>
-<!-- 41&#45;&gt;33 -->
-<g id="edge61" class="edge"><title>41&#45;&gt;33</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M832.003,-503.876C850.598,-494.512 873.827,-482.814 893.706,-472.803"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="895.509,-475.814 902.866,-468.19 892.36,-469.562 895.509,-475.814"/>
-</g>
-<!-- 42&#45;&gt;35 -->
-<g id="edge62" class="edge"><title>42&#45;&gt;35</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M2115.98,-503.876C2096.07,-493.557 2070.71,-480.403 2050.25,-469.797"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="2051.73,-466.619 2041.24,-465.123 2048.5,-472.833 2051.73,-466.619"/>
-</g>
-<!-- 43&#45;&gt;35 -->
-<g id="edge63" class="edge"><title>43&#45;&gt;35</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M2014,-503.697C2014,-495.983 2014,-486.712 2014,-478.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="2017.5,-478.104 2014,-468.104 2010.5,-478.104 2017.5,-478.104"/>
-</g>
-<!-- 43&#45;&gt;36 -->
-<g id="edge65" class="edge"><title>43&#45;&gt;36</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1966.67,-503.982C1941.84,-494.818 1910.78,-482.99 1875.56,-468.1"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1876.6,-464.736 1866.03,-464.035 1873.85,-471.176 1876.6,-464.736"/>
-</g>
-<!-- 43&#45;&gt;37 -->
-<g id="edge67" class="edge"><title>43&#45;&gt;37</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1988.8,-503.876C1975.59,-494.893 1959.21,-483.763 1944.89,-474.034"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1946.53,-470.916 1936.29,-468.19 1942.6,-476.705 1946.53,-470.916"/>
-</g>
-<!-- 43&#45;&gt;38 -->
-<g id="edge69" class="edge"><title>43&#45;&gt;38</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1961.79,-506.316C1958.82,-505.522 1955.87,-504.745 1953,-504 1886.63,-486.794 1869.37,-485.206 1803,-468 1795.22,-465.982 1786.9,-463.73 1779,-461.543"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1779.85,-458.145 1769.27,-458.828 1777.96,-464.887 1779.85,-458.145"/>
-</g>
-<!-- 44&#45;&gt;36 -->
-<g id="edge64" class="edge"><title>44&#45;&gt;36</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1757.42,-503.876C1771.41,-494.808 1788.78,-483.552 1803.89,-473.759"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1805.99,-476.566 1812.48,-468.19 1802.18,-470.692 1805.99,-476.566"/>
-</g>
-<!-- 45&#45;&gt;37 -->
-<g id="edge66" class="edge"><title>45&#45;&gt;37</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1886.91,-503.697C1890.55,-495.728 1894.95,-486.1 1898.99,-477.264"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1902.21,-478.654 1903.18,-468.104 1895.84,-475.744 1902.21,-478.654"/>
-</g>
-<!-- 46&#45;&gt;38 -->
-<g id="edge68" class="edge"><title>46&#45;&gt;38</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1621.9,-503.876C1647.49,-492.607 1680.77,-477.957 1705.8,-466.936"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1707.22,-470.138 1714.96,-462.905 1704.4,-463.731 1707.22,-470.138"/>
+<g id="node42" class="node">
+<title>41</title>
+<path fill="none" stroke="#56b1d8" stroke-width="2" d="M1394.5,-252C1394.5,-252 1302.5,-252 1302.5,-252 1296.5,-252 1290.5,-246 1290.5,-240 1290.5,-240 1290.5,-228 1290.5,-228 1290.5,-222 1296.5,-216 1302.5,-216 1302.5,-216 1394.5,-216 1394.5,-216 1400.5,-216 1406.5,-222 1406.5,-228 1406.5,-228 1406.5,-240 1406.5,-240 1406.5,-246 1400.5,-252 1394.5,-252"/>
+<text text-anchor="middle" x="1348.5" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc_all_samples</text>
+</g>
+<!-- 41&#45;&gt;20 -->
+<g id="edge55" class="edge">
+<title>41&#45;&gt;20</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1353.5468,-215.8314C1355.7094,-208.0463 1358.2853,-198.7729 1360.6848,-190.1347"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1364.081,-190.9852 1363.3852,-180.4133 1357.3364,-189.1117 1364.081,-190.9852"/>
+</g>
+<!-- 42 -->
+<g id="node43" class="node">
+<title>42</title>
+<path fill="none" stroke="#56d87b" stroke-width="2" d="M1022.5,-396C1022.5,-396 900.5,-396 900.5,-396 894.5,-396 888.5,-390 888.5,-384 888.5,-384 888.5,-372 888.5,-372 888.5,-366 894.5,-360 900.5,-360 900.5,-360 1022.5,-360 1022.5,-360 1028.5,-360 1034.5,-366 1034.5,-372 1034.5,-372 1034.5,-384 1034.5,-384 1034.5,-390 1028.5,-396 1022.5,-396"/>
+<text text-anchor="middle" x="961.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text>
+<text text-anchor="middle" x="961.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">unique: Unique</text>
+</g>
+<!-- 42&#45;&gt;22 -->
+<g id="edge56" class="edge">
+<title>42&#45;&gt;22</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M944.3407,-359.8314C936.3489,-351.3694 926.6962,-341.1489 917.9584,-331.8971"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="920.3011,-329.2802 910.8903,-324.4133 915.212,-334.0866 920.3011,-329.2802"/>
+</g>
+<!-- 42&#45;&gt;25 -->
+<g id="edge58" class="edge">
+<title>42&#45;&gt;25</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M989.7623,-359.8314C1003.9552,-350.7074 1021.3282,-339.539 1036.5636,-329.7449"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1038.7276,-332.5146 1045.2467,-324.1628 1034.9422,-326.6263 1038.7276,-332.5146"/>
+</g>
+<!-- 52 -->
+<g id="node53" class="node">
+<title>52</title>
+<path fill="none" stroke="#d8bc56" stroke-width="2" d="M998.5,-324C998.5,-324 968.5,-324 968.5,-324 962.5,-324 956.5,-318 956.5,-312 956.5,-312 956.5,-300 956.5,-300 956.5,-294 962.5,-288 968.5,-288 968.5,-288 998.5,-288 998.5,-288 1004.5,-288 1010.5,-294 1010.5,-300 1010.5,-300 1010.5,-312 1010.5,-312 1010.5,-318 1004.5,-324 998.5,-324"/>
+<text text-anchor="middle" x="983.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text>
+</g>
+<!-- 42&#45;&gt;52 -->
+<g id="edge92" class="edge">
+<title>42&#45;&gt;52</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M967.0515,-359.8314C969.4303,-352.0463 972.2638,-342.7729 974.9033,-334.1347"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="978.2987,-334.9996 977.8737,-324.4133 971.6042,-332.954 978.2987,-334.9996"/>
+</g>
+<!-- 43 -->
+<g id="node44" class="node">
+<title>43</title>
+<path fill="none" stroke="#56d87b" stroke-width="2" d="M1186.5,-396C1186.5,-396 1064.5,-396 1064.5,-396 1058.5,-396 1052.5,-390 1052.5,-384 1052.5,-384 1052.5,-372 1052.5,-372 1052.5,-366 1058.5,-360 1064.5,-360 1064.5,-360 1186.5,-360 1186.5,-360 1192.5,-360 1198.5,-366 1198.5,-372 1198.5,-372 1198.5,-384 1198.5,-384 1198.5,-390 1192.5,-396 1186.5,-396"/>
+<text text-anchor="middle" x="1125.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text>
+<text text-anchor="middle" x="1125.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">unique: UniqueMultiple</text>
+</g>
+<!-- 43&#45;&gt;24 -->
+<g id="edge57" class="edge">
+<title>43&#45;&gt;24</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1139.6312,-359.8314C1146.0811,-351.5386 1153.8445,-341.557 1160.9252,-332.4533"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1163.8019,-334.4556 1167.1786,-324.4133 1158.2764,-330.158 1163.8019,-334.4556"/>
+</g>
+<!-- 43&#45;&gt;26 -->
+<g id="edge59" class="edge">
+<title>43&#45;&gt;26</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1198.6501,-361.1192C1254.8791,-348.1433 1331.3385,-330.4988 1382.4526,-318.7032"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1383.3671,-322.0843 1392.324,-316.4252 1381.793,-315.2635 1383.3671,-322.0843"/>
+</g>
+<!-- 54 -->
+<g id="node55" class="node">
+<title>54</title>
+<path fill="none" stroke="#d8bc56" stroke-width="2" d="M1286.5,-324C1286.5,-324 1256.5,-324 1256.5,-324 1250.5,-324 1244.5,-318 1244.5,-312 1244.5,-312 1244.5,-300 1244.5,-300 1244.5,-294 1250.5,-288 1256.5,-288 1256.5,-288 1286.5,-288 1286.5,-288 1292.5,-288 1298.5,-294 1298.5,-300 1298.5,-300 1298.5,-312 1298.5,-312 1298.5,-318 1292.5,-324 1286.5,-324"/>
+<text text-anchor="middle" x="1271.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text>
+</g>
+<!-- 43&#45;&gt;54 -->
+<g id="edge96" class="edge">
+<title>43&#45;&gt;54</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1162.4507,-359.9439C1181.8115,-350.4643 1206.1139,-338.536 1235.2027,-324.1337"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1236.9773,-327.1606 1244.3838,-319.5846 1233.8694,-320.8883 1236.9773,-327.1606"/>
+</g>
+<!-- 44 -->
+<g id="node45" class="node">
+<title>44</title>
+<path fill="none" stroke="#56d87b" stroke-width="2" d="M1891.5,-396C1891.5,-396 1769.5,-396 1769.5,-396 1763.5,-396 1757.5,-390 1757.5,-384 1757.5,-384 1757.5,-372 1757.5,-372 1757.5,-366 1763.5,-360 1769.5,-360 1769.5,-360 1891.5,-360 1891.5,-360 1897.5,-360 1903.5,-366 1903.5,-372 1903.5,-372 1903.5,-384 1903.5,-384 1903.5,-390 1897.5,-396 1891.5,-396"/>
+<text text-anchor="middle" x="1830.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text>
+<text text-anchor="middle" x="1830.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">unique: Unique</text>
+</g>
+<!-- 44&#45;&gt;27 -->
+<g id="edge60" class="edge">
+<title>44&#45;&gt;27</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1824.1914,-359.8314C1821.4883,-352.0463 1818.2684,-342.7729 1815.269,-334.1347"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1818.48,-332.7119 1811.8935,-324.4133 1811.8673,-335.0081 1818.48,-332.7119"/>
+</g>
+<!-- 44&#45;&gt;29 -->
+<g id="edge62" class="edge">
+<title>44&#45;&gt;29</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1878.9497,-359.8314C1905.9795,-349.6952 1939.7376,-337.0359 1967.7249,-326.5407"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1969.2289,-329.7147 1977.3632,-322.9263 1966.771,-323.1604 1969.2289,-329.7147"/>
+</g>
+<!-- 53 -->
+<g id="node54" class="node">
+<title>53</title>
+<path fill="none" stroke="#d8bc56" stroke-width="2" d="M1542.5,-324C1542.5,-324 1512.5,-324 1512.5,-324 1506.5,-324 1500.5,-318 1500.5,-312 1500.5,-312 1500.5,-300 1500.5,-300 1500.5,-294 1506.5,-288 1512.5,-288 1512.5,-288 1542.5,-288 1542.5,-288 1548.5,-288 1554.5,-294 1554.5,-300 1554.5,-300 1554.5,-312 1554.5,-312 1554.5,-318 1548.5,-324 1542.5,-324"/>
+<text text-anchor="middle" x="1527.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text>
+</g>
+<!-- 44&#45;&gt;53 -->
+<g id="edge94" class="edge">
+<title>44&#45;&gt;53</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1757.4501,-368.5501C1705.4431,-360.6099 1634.0877,-347.2475 1564.4994,-323.8908"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1565.2888,-320.4614 1554.6942,-320.5282 1563.018,-327.0829 1565.2888,-320.4614"/>
+</g>
+<!-- 45 -->
+<g id="node46" class="node">
+<title>45</title>
+<path fill="none" stroke="#56d87b" stroke-width="2" d="M2055.5,-396C2055.5,-396 1933.5,-396 1933.5,-396 1927.5,-396 1921.5,-390 1921.5,-384 1921.5,-384 1921.5,-372 1921.5,-372 1921.5,-366 1927.5,-360 1933.5,-360 1933.5,-360 2055.5,-360 2055.5,-360 2061.5,-360 2067.5,-366 2067.5,-372 2067.5,-372 2067.5,-384 2067.5,-384 2067.5,-390 2061.5,-396 2055.5,-396"/>
+<text text-anchor="middle" x="1994.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text>
+<text text-anchor="middle" x="1994.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">unique: UniqueMultiple</text>
+</g>
+<!-- 45&#45;&gt;28 -->
+<g id="edge61" class="edge">
+<title>45&#45;&gt;28</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M2047.7229,-359.9243C2079.402,-349.1654 2119.5245,-335.5388 2151.5103,-324.6757"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="2152.8141,-327.9294 2161.1574,-321.3994 2150.563,-321.3012 2152.8141,-327.9294"/>
+</g>
+<!-- 45&#45;&gt;30 -->
+<g id="edge63" class="edge">
+<title>45&#45;&gt;30</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1974.3126,-359.8314C1964.6486,-351.1337 1952.9204,-340.5783 1942.4184,-331.1265"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1944.4553,-328.251 1934.6809,-324.1628 1939.7725,-333.454 1944.4553,-328.251"/>
+</g>
+<!-- 55 -->
+<g id="node56" class="node">
+<title>55</title>
+<path fill="none" stroke="#d8bc56" stroke-width="2" d="M1614.5,-324C1614.5,-324 1584.5,-324 1584.5,-324 1578.5,-324 1572.5,-318 1572.5,-312 1572.5,-312 1572.5,-300 1572.5,-300 1572.5,-294 1578.5,-288 1584.5,-288 1584.5,-288 1614.5,-288 1614.5,-288 1620.5,-288 1626.5,-294 1626.5,-300 1626.5,-300 1626.5,-312 1626.5,-312 1626.5,-318 1620.5,-324 1614.5,-324"/>
+<text text-anchor="middle" x="1599.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text>
+</g>
+<!-- 45&#45;&gt;55 -->
+<g id="edge98" class="edge">
+<title>45&#45;&gt;55</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1921.2166,-361.7413C1918.2748,-361.1432 1915.3606,-360.5604 1912.5,-360 1813.2092,-340.5476 1695.4586,-321.2394 1636.7158,-311.8616"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1637.2156,-308.3971 1626.7897,-310.2819 1636.1154,-315.3101 1637.2156,-308.3971"/>
+</g>
+<!-- 46&#45;&gt;31 -->
+<g id="edge65" class="edge">
+<title>46&#45;&gt;31</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M875.0234,-215.8314C876.0929,-208.131 877.3647,-198.9743 878.5532,-190.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="882.0336,-190.7997 879.9426,-180.4133 875.1001,-189.8367 882.0336,-190.7997"/>
+</g>
+<!-- 46&#45;&gt;32 -->
+<g id="edge67" class="edge">
+<title>46&#45;&gt;32</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M913.3794,-215.8314C935.046,-206.2018 961.8363,-194.295 984.7078,-184.1299"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="986.1979,-187.2978 993.9145,-180.038 983.3549,-180.9011 986.1979,-187.2978"/>
+</g>
+<!-- 47&#45;&gt;36 -->
+<g id="edge68" class="edge">
+<title>47&#45;&gt;36</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M337.5,-724.9656C337.5,-716.5178 337.5,-706.2542 337.5,-696.8064"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="341.0001,-696.6265 337.5,-686.6265 334.0001,-696.6265 341.0001,-696.6265"/>
+</g>
+<!-- 48 -->
+<g id="node49" class="node">
+<title>48</title>
+<path fill="none" stroke="#56d89a" stroke-width="2" d="M448,-396C448,-396 333,-396 333,-396 327,-396 321,-390 321,-384 321,-384 321,-372 321,-372 321,-366 327,-360 333,-360 333,-360 448,-360 448,-360 454,-360 460,-366 460,-372 460,-372 460,-384 460,-384 460,-390 454,-396 448,-396"/>
+<text text-anchor="middle" x="390.5" y="-381" font-family="sans" font-size="10.00" fill="#000000">extract_transcriptome</text>
+<text text-anchor="middle" x="390.5" y="-370" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text>
+</g>
+<!-- 48&#45;&gt;37 -->
+<g id="edge69" class="edge">
+<title>48&#45;&gt;37</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M388.2289,-359.8314C387.2664,-352.131 386.1218,-342.9743 385.0521,-334.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="388.5151,-333.9019 383.8017,-324.4133 381.5691,-334.7702 388.5151,-333.9019"/>
+</g>
+<!-- 58 -->
+<g id="node59" class="node">
+<title>58</title>
+<path fill="none" stroke="#5692d8" stroke-width="2" d="M704.5,-324C704.5,-324 510.5,-324 510.5,-324 504.5,-324 498.5,-318 498.5,-312 498.5,-312 498.5,-300 498.5,-300 498.5,-294 504.5,-288 510.5,-288 510.5,-288 704.5,-288 704.5,-288 710.5,-288 716.5,-294 716.5,-300 716.5,-300 716.5,-312 716.5,-312 716.5,-318 710.5,-324 704.5,-324"/>
+<text text-anchor="middle" x="607.5" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">concatenate_transcriptome_and_genome</text>
+</g>
+<!-- 48&#45;&gt;58 -->
+<g id="edge104" class="edge">
+<title>48&#45;&gt;58</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M444.9782,-359.9243C474.9013,-349.9959 512.1843,-337.6255 543.4904,-327.2382"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="544.6104,-330.5543 552.9994,-324.0831 542.406,-323.9104 544.6104,-330.5543"/>
+</g>
+<!-- 49&#45;&gt;38 -->
+<g id="edge70" class="edge">
+<title>49&#45;&gt;38</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M520.9841,-724.9656C521.2109,-716.5178 521.4865,-706.2542 521.7401,-696.8064"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="525.2437,-696.7169 522.0134,-686.6265 518.2462,-696.5289 525.2437,-696.7169"/>
+</g>
+<!-- 50 -->
+<g id="node51" class="node">
+<title>50</title>
+<path fill="none" stroke="#d6d856" stroke-width="2" d="M859,-468C859,-468 764,-468 764,-468 758,-468 752,-462 752,-456 752,-456 752,-444 752,-444 752,-438 758,-432 764,-432 764,-432 859,-432 859,-432 865,-432 871,-438 871,-444 871,-444 871,-456 871,-456 871,-462 865,-468 859,-468"/>
+<text text-anchor="middle" x="811.5" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">calculate_TIN_scores</text>
+</g>
+<!-- 50&#45;&gt;39 -->
+<g id="edge71" class="edge">
+<title>50&#45;&gt;39</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M803.1727,-431.8314C799.527,-423.8771 795.1691,-414.369 791.1373,-405.5723"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="794.2877,-404.0456 786.9394,-396.4133 787.9243,-406.9622 794.2877,-404.0456"/>
+</g>
+<!-- 51 -->
+<g id="node52" class="node">
+<title>51</title>
+<path fill="none" stroke="#d6d856" stroke-width="2" d="M1015,-468C1015,-468 920,-468 920,-468 914,-468 908,-462 908,-456 908,-456 908,-444 908,-444 908,-438 914,-432 920,-432 920,-432 1015,-432 1015,-432 1021,-432 1027,-438 1027,-444 1027,-444 1027,-456 1027,-456 1027,-462 1021,-468 1015,-468"/>
+<text text-anchor="middle" x="967.5" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">calculate_TIN_scores</text>
+</g>
+<!-- 51&#45;&gt;39 -->
+<g id="edge72" class="edge">
+<title>51&#45;&gt;39</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M919.8073,-431.8314C894.1927,-422.0734 862.4398,-409.977 835.526,-399.7242"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="836.4406,-396.3273 825.8497,-396.038 833.9486,-402.8687 836.4406,-396.3273"/>
+</g>
+<!-- 52&#45;&gt;40 -->
+<g id="edge73" class="edge">
+<title>52&#45;&gt;40</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1010.7706,-291.6816C1013.6832,-290.3585 1016.63,-289.1029 1019.5,-288 1025.7027,-285.6163 1092.7135,-267.1809 1146.473,-252.5042"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1147.6133,-255.8211 1156.3393,-249.8122 1145.7706,-249.068 1147.6133,-255.8211"/>
+</g>
+<!-- 53&#45;&gt;40 -->
+<g id="edge74" class="edge">
+<title>53&#45;&gt;40</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1500.3358,-291.3825C1497.4025,-290.1177 1494.4217,-288.9576 1491.5,-288 1404.5027,-259.487 1375.8885,-271.4378 1282.3915,-252.0524"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1283.0348,-248.6109 1272.5239,-249.9413 1281.5703,-255.456 1283.0348,-248.6109"/>
+</g>
+<!-- 54&#45;&gt;41 -->
+<g id="edge75" class="edge">
+<title>54&#45;&gt;41</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1290.9304,-287.8314C1300.232,-279.1337 1311.5204,-268.5783 1321.6286,-259.1265"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1324.1621,-261.5493 1329.0759,-252.1628 1319.3811,-256.4363 1324.1621,-261.5493"/>
+</g>
+<!-- 55&#45;&gt;41 -->
+<g id="edge76" class="edge">
+<title>55&#45;&gt;41</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1572.2628,-291.5928C1569.3437,-290.287 1566.3862,-289.0598 1563.5,-288 1500.3582,-264.8147 1481.6817,-268.6069 1416.5,-252 1416.4001,-251.9746 1416.3002,-251.9491 1416.2002,-251.9236"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1417.2765,-248.5865 1406.72,-249.4873 1415.5342,-255.3662 1417.2765,-248.5865"/>
+</g>
+<!-- 56 -->
+<g id="node57" class="node">
+<title>56</title>
+<path fill="none" stroke="#78d856" stroke-width="2" d="M712.5,-468C712.5,-468 676.5,-468 676.5,-468 670.5,-468 664.5,-462 664.5,-456 664.5,-456 664.5,-444 664.5,-444 664.5,-438 670.5,-432 676.5,-432 676.5,-432 712.5,-432 712.5,-432 718.5,-432 724.5,-438 724.5,-444 724.5,-444 724.5,-456 724.5,-456 724.5,-462 718.5,-468 712.5,-468"/>
+<text text-anchor="middle" x="694.5" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">star_rpm</text>
+</g>
+<!-- 56&#45;&gt;42 -->
+<g id="edge77" class="edge">
+<title>56&#45;&gt;42</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M724.6451,-438.3401C730.8393,-436.11 737.348,-433.8857 743.5,-432 787.5825,-418.4876 837.4538,-405.9367 878.3604,-396.342"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="879.3424,-399.7071 888.2879,-394.0301 877.7546,-392.8895 879.3424,-399.7071"/>
+</g>
+<!-- 56&#45;&gt;43 -->
+<g id="edge78" class="edge">
+<title>56&#45;&gt;43</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M724.7438,-437.648C730.8728,-435.4989 737.3315,-433.4817 743.5,-432 870.8879,-401.4011 909.2319,-417.5833 1042.0957,-396.1293"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1042.9576,-399.5343 1052.2509,-394.4466 1041.8133,-392.6285 1042.9576,-399.5343"/>
+</g>
+<!-- 57 -->
+<g id="node58" class="node">
+<title>57</title>
+<path fill="none" stroke="#78d856" stroke-width="2" d="M1827.5,-468C1827.5,-468 1791.5,-468 1791.5,-468 1785.5,-468 1779.5,-462 1779.5,-456 1779.5,-456 1779.5,-444 1779.5,-444 1779.5,-438 1785.5,-432 1791.5,-432 1791.5,-432 1827.5,-432 1827.5,-432 1833.5,-432 1839.5,-438 1839.5,-444 1839.5,-444 1839.5,-456 1839.5,-456 1839.5,-462 1833.5,-468 1827.5,-468"/>
+<text text-anchor="middle" x="1809.5" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">star_rpm</text>
+</g>
+<!-- 57&#45;&gt;44 -->
+<g id="edge79" class="edge">
+<title>57&#45;&gt;44</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1814.7992,-431.8314C1817.0698,-424.0463 1819.7746,-414.7729 1822.294,-406.1347"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1825.6894,-406.9933 1825.1295,-396.4133 1818.9694,-405.0332 1825.6894,-406.9933"/>
+</g>
+<!-- 57&#45;&gt;45 -->
+<g id="edge80" class="edge">
+<title>57&#45;&gt;45</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1839.6352,-438.2717C1866.3801,-427.8629 1906.1449,-412.3869 1938.6831,-399.7234"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1940.0384,-402.9517 1948.0881,-396.063 1937.4996,-396.4283 1940.0384,-402.9517"/>
+</g>
+<!-- 58&#45;&gt;46 -->
+<g id="edge81" class="edge">
+<title>58&#45;&gt;46</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M674.0286,-287.9243C713.0381,-277.3255 762.2902,-263.9438 801.9712,-253.1626"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="803.1088,-256.4804 811.8413,-250.4809 801.2734,-249.7253 803.1088,-256.4804"/>
+</g>
+<!-- 59&#45;&gt;50 -->
+<g id="edge86" class="edge">
+<title>59&#45;&gt;50</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M750.1542,-575.8878C767.9524,-567.6652 785.8109,-556.0701 797.5,-540 810.3897,-522.2794 813.427,-497.3723 813.5014,-478.2512"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="816.9956,-477.9509 813.2685,-468.0333 809.9974,-478.1105 816.9956,-477.9509"/>
+</g>
+<!-- 59&#45;&gt;56 -->
+<g id="edge100" class="edge">
+<title>59&#45;&gt;56</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M627.9397,-576.2456C610.5375,-568.1131 593.6429,-556.4803 583.5,-540 575.1137,-526.3739 575.0145,-517.5645 583.5,-504 599.0019,-479.2196 629.4944,-465.516 654.6033,-458.1202"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="655.5357,-461.4939 664.2702,-455.4973 653.7026,-454.7381 655.5357,-461.4939"/>
+</g>
+<!-- 60 -->
+<g id="node61" class="node">
+<title>60</title>
+<path fill="none" stroke="#56d0d8" stroke-width="2" d="M776.5,-540C776.5,-540 604.5,-540 604.5,-540 598.5,-540 592.5,-534 592.5,-528 592.5,-528 592.5,-516 592.5,-516 592.5,-510 598.5,-504 604.5,-504 604.5,-504 776.5,-504 776.5,-504 782.5,-504 788.5,-510 788.5,-516 788.5,-516 788.5,-528 788.5,-528 788.5,-534 782.5,-540 776.5,-540"/>
+<text text-anchor="middle" x="690.5" y="-525" font-family="sans" font-size="10.00" fill="#000000">index_genomic_alignment_samtools</text>
+<text text-anchor="middle" x="690.5" y="-514" font-family="sans" font-size="10.00" fill="#000000">seqmode: pe</text>
+</g>
+<!-- 59&#45;&gt;60 -->
+<g id="edge107" class="edge">
+<title>59&#45;&gt;60</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M690.5,-575.8314C690.5,-568.131 690.5,-558.9743 690.5,-550.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="694.0001,-550.4132 690.5,-540.4133 687.0001,-550.4133 694.0001,-550.4132"/>
+</g>
+<!-- 60&#45;&gt;50 -->
+<g id="edge87" class="edge">
+<title>60&#45;&gt;50</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M721.0334,-503.8314C736.5101,-494.6221 755.4869,-483.3301 772.0563,-473.4706"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="774.1724,-476.2843 780.9764,-468.1628 770.5929,-470.2687 774.1724,-476.2843"/>
+</g>
+<!-- 60&#45;&gt;56 -->
+<g id="edge101" class="edge">
+<title>60&#45;&gt;56</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M691.5094,-503.8314C691.9372,-496.131 692.4459,-486.9743 692.9213,-478.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="696.4169,-478.592 693.477,-468.4133 689.4276,-478.2037 696.4169,-478.592"/>
+</g>
+<!-- 61 -->
+<g id="node62" class="node">
+<title>61</title>
+<path fill="none" stroke="#b6d856" stroke-width="2" d="M992.5,-540C992.5,-540 856.5,-540 856.5,-540 850.5,-540 844.5,-534 844.5,-528 844.5,-528 844.5,-516 844.5,-516 844.5,-510 850.5,-504 856.5,-504 856.5,-504 992.5,-504 992.5,-504 998.5,-504 1004.5,-510 1004.5,-516 1004.5,-516 1004.5,-528 1004.5,-528 1004.5,-534 998.5,-540 992.5,-540"/>
+<text text-anchor="middle" x="924.5" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">extract_transcripts_as_bed12</text>
+</g>
+<!-- 61&#45;&gt;50 -->
+<g id="edge88" class="edge">
+<title>61&#45;&gt;50</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M895.9853,-503.8314C881.6658,-494.7074 864.1376,-483.539 848.7662,-473.7449"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="850.3199,-470.5847 840.0055,-468.1628 846.5583,-476.4882 850.3199,-470.5847"/>
+</g>
+<!-- 61&#45;&gt;51 -->
+<g id="edge91" class="edge">
+<title>61&#45;&gt;51</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M935.3507,-503.8314C940.2023,-495.7079 946.0217,-485.9637 951.368,-477.0118"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="954.3806,-478.7933 956.5032,-468.4133 948.3708,-475.2041 954.3806,-478.7933"/>
+</g>
+<!-- 62&#45;&gt;51 -->
+<g id="edge89" class="edge">
+<title>62&#45;&gt;51</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1156.7605,-575.9145C1136.2294,-566.0828 1111.0337,-553.2464 1089.5,-540 1056.8123,-519.8922 1021.7828,-493.4935 997.6832,-474.493"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="999.6442,-471.581 989.6364,-468.1033 995.2912,-477.0629 999.6442,-471.581"/>
+</g>
+<!-- 62&#45;&gt;57 -->
+<g id="edge102" class="edge">
+<title>62&#45;&gt;57</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1250.0946,-581.4101C1370.9279,-553.0251 1662.3719,-484.5619 1769.2964,-459.4442"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1770.4165,-462.7765 1779.3511,-457.0823 1768.8157,-455.962 1770.4165,-462.7765"/>
+</g>
+<!-- 63 -->
+<g id="node64" class="node">
+<title>63</title>
+<path fill="none" stroke="#56d0d8" stroke-width="2" d="M1282.5,-540C1282.5,-540 1110.5,-540 1110.5,-540 1104.5,-540 1098.5,-534 1098.5,-528 1098.5,-528 1098.5,-516 1098.5,-516 1098.5,-510 1104.5,-504 1110.5,-504 1110.5,-504 1282.5,-504 1282.5,-504 1288.5,-504 1294.5,-510 1294.5,-516 1294.5,-516 1294.5,-528 1294.5,-528 1294.5,-534 1288.5,-540 1282.5,-540"/>
+<text text-anchor="middle" x="1196.5" y="-525" font-family="sans" font-size="10.00" fill="#000000">index_genomic_alignment_samtools</text>
+<text text-anchor="middle" x="1196.5" y="-514" font-family="sans" font-size="10.00" fill="#000000">seqmode: se</text>
+</g>
+<!-- 62&#45;&gt;63 -->
+<g id="edge110" class="edge">
+<title>62&#45;&gt;63</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1196.5,-575.8314C1196.5,-568.131 1196.5,-558.9743 1196.5,-550.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1200.0001,-550.4132 1196.5,-540.4133 1193.0001,-550.4133 1200.0001,-550.4132"/>
+</g>
+<!-- 63&#45;&gt;51 -->
+<g id="edge90" class="edge">
+<title>63&#45;&gt;51</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1139.0092,-503.9243C1107.2952,-493.9531 1067.7473,-481.5188 1034.6225,-471.104"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1035.6038,-467.7437 1025.0144,-468.0831 1033.5042,-474.4214 1035.6038,-467.7437"/>
+</g>
+<!-- 63&#45;&gt;57 -->
+<g id="edge103" class="edge">
+<title>63&#45;&gt;57</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1294.6491,-510.4719C1431.573,-494.3895 1673.8386,-465.9341 1769.2647,-454.7258"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1769.8407,-458.1823 1779.3641,-453.5396 1769.0241,-451.2301 1769.8407,-458.1823"/>
+</g>
+<!-- 64&#45;&gt;52 -->
+<g id="edge93" class="edge">
+<title>64&#45;&gt;52</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1216.4605,-362.1284C1213.4351,-361.3884 1210.4346,-360.6742 1207.5,-360 1127.6633,-341.6577 1101.9806,-350.5534 1020.3743,-323.8133"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1021.2776,-320.4246 1010.6836,-320.5592 1019.0492,-327.0605 1021.2776,-320.4246"/>
+</g>
+<!-- 64&#45;&gt;53 -->
+<g id="edge95" class="edge">
+<title>64&#45;&gt;53</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1332.6487,-367.1573C1374.6163,-358.5136 1432.5569,-344.8987 1490.5717,-323.9614"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1492.083,-327.1347 1500.2587,-320.3961 1489.6652,-320.5655 1492.083,-327.1347"/>
+</g>
+<!-- 64&#45;&gt;54 -->
+<g id="edge97" class="edge">
+<title>64&#45;&gt;54</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1273.743,-359.8314C1273.4221,-352.131 1273.0406,-342.9743 1272.684,-334.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1276.1806,-334.2589 1272.2672,-324.4133 1269.1867,-334.5503 1276.1806,-334.2589"/>
+</g>
+<!-- 64&#45;&gt;55 -->
+<g id="edge99" class="edge">
+<title>64&#45;&gt;55</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1332.7281,-371.9568C1389.7665,-364.9647 1478.925,-351.1687 1562.6653,-323.7981"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1563.9451,-327.0608 1572.321,-320.5726 1561.7272,-320.4214 1563.9451,-327.0608"/>
 </g>
 </g>
 </svg>
diff --git a/images/rule_graph.svg b/images/rule_graph.svg
index c2634ec020a62da06b89678a633a96fd9ce35a55..79aa7491895e5db0636051a228a40e58c7a6d062 100644
--- a/images/rule_graph.svg
+++ b/images/rule_graph.svg
@@ -1,443 +1,553 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.38.0 (20140413.2041)
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: snakemake_dag Pages: 1 -->
-<svg width="1146pt" height="908pt"
- viewBox="0.00 0.00 1146.00 908.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 904)">
+<svg width="1145pt" height="836pt"
+ viewBox="0.00 0.00 1145.00 836.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 832)">
 <title>snakemake_dag</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-904 1142,-904 1142,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-832 1141,-832 1141,4 -4,4"/>
 <!-- 0 -->
-<g id="node1" class="node"><title>0</title>
-<path fill="none" stroke="#d8ac56" stroke-width="2" d="M487,-36C487,-36 457,-36 457,-36 451,-36 445,-30 445,-24 445,-24 445,-12 445,-12 445,-6 451,-0 457,-0 457,-0 487,-0 487,-0 493,-0 499,-6 499,-12 499,-12 499,-24 499,-24 499,-30 493,-36 487,-36"/>
-<text text-anchor="middle" x="472" y="-15.5" font-family="sans" font-size="10.00">finish</text>
+<g id="node1" class="node">
+<title>0</title>
+<path fill="none" stroke="#d8ac56" stroke-width="2" d="M842,-36C842,-36 812,-36 812,-36 806,-36 800,-30 800,-24 800,-24 800,-12 800,-12 800,-6 806,0 812,0 812,0 842,0 842,0 848,0 854,-6 854,-12 854,-12 854,-24 854,-24 854,-30 848,-36 842,-36"/>
+<text text-anchor="middle" x="827" y="-15.5" font-family="sans" font-size="10.00" fill="#000000">finish</text>
 </g>
 <!-- 1 -->
-<g id="node2" class="node"><title>1</title>
-<path fill="none" stroke="#97d856" stroke-width="2" d="M506,-108C506,-108 438,-108 438,-108 432,-108 426,-102 426,-96 426,-96 426,-84 426,-84 426,-78 432,-72 438,-72 438,-72 506,-72 506,-72 512,-72 518,-78 518,-84 518,-84 518,-96 518,-96 518,-102 512,-108 506,-108"/>
-<text text-anchor="middle" x="472" y="-87.5" font-family="sans" font-size="10.00">MULTIQC_report</text>
+<g id="node2" class="node">
+<title>1</title>
+<path fill="none" stroke="#a7d856" stroke-width="2" d="M222,-108C222,-108 158,-108 158,-108 152,-108 146,-102 146,-96 146,-96 146,-84 146,-84 146,-78 152,-72 158,-72 158,-72 222,-72 222,-72 228,-72 234,-78 234,-84 234,-84 234,-96 234,-96 234,-102 228,-108 222,-108"/>
+<text text-anchor="middle" x="190" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">multiqc_report</text>
 </g>
 <!-- 1&#45;&gt;0 -->
-<g id="edge1" class="edge"><title>1&#45;&gt;0</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M472,-71.6966C472,-63.9827 472,-54.7125 472,-46.1124"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="475.5,-46.1043 472,-36.1043 468.5,-46.1044 475.5,-46.1043"/>
+<g id="edge1" class="edge">
+<title>1&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M234.0349,-85.0227C352.9825,-71.5781 679.2173,-34.7039 789.7865,-22.2062"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="790.2557,-25.6756 799.7993,-21.0745 789.4694,-18.7199 790.2557,-25.6756"/>
 </g>
 <!-- 2 -->
-<g id="node3" class="node"><title>2</title>
-<path fill="none" stroke="#56d88a" stroke-width="2" d="M521,-180C521,-180 423,-180 423,-180 417,-180 411,-174 411,-168 411,-168 411,-156 411,-156 411,-150 417,-144 423,-144 423,-144 521,-144 521,-144 527,-144 533,-150 533,-156 533,-156 533,-168 533,-168 533,-174 527,-180 521,-180"/>
-<text text-anchor="middle" x="472" y="-159.5" font-family="sans" font-size="10.00">prepare_MultiQC_config</text>
+<g id="node3" class="node">
+<title>2</title>
+<path fill="none" stroke="#d6d856" stroke-width="2" d="M799.5,-252C799.5,-252 730.5,-252 730.5,-252 724.5,-252 718.5,-246 718.5,-240 718.5,-240 718.5,-228 718.5,-228 718.5,-222 724.5,-216 730.5,-216 730.5,-216 799.5,-216 799.5,-216 805.5,-216 811.5,-222 811.5,-228 811.5,-228 811.5,-240 811.5,-240 811.5,-246 805.5,-252 799.5,-252"/>
+<text text-anchor="middle" x="765" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
-<!-- 2&#45;&gt;1 -->
-<g id="edge2" class="edge"><title>2&#45;&gt;1</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M472,-143.697C472,-135.983 472,-126.712 472,-118.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="475.5,-118.104 472,-108.104 468.5,-118.104 475.5,-118.104"/>
+<!-- 2&#45;&gt;0 -->
+<g id="edge3" class="edge">
+<title>2&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M770.1794,-215.9555C781.0066,-178.235 806.0983,-90.8188 819.0089,-45.8399"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="822.3968,-46.7226 821.7917,-36.1451 815.6685,-44.7913 822.3968,-46.7226"/>
 </g>
 <!-- 3 -->
-<g id="node4" class="node"><title>3</title>
-<path fill="none" stroke="#88d856" stroke-width="2" d="M519.5,-252C519.5,-252 424.5,-252 424.5,-252 418.5,-252 412.5,-246 412.5,-240 412.5,-240 412.5,-228 412.5,-228 412.5,-222 418.5,-216 424.5,-216 424.5,-216 519.5,-216 519.5,-216 525.5,-216 531.5,-222 531.5,-228 531.5,-228 531.5,-240 531.5,-240 531.5,-246 525.5,-252 519.5,-252"/>
-<text text-anchor="middle" x="472" y="-231.5" font-family="sans" font-size="10.00">prepare_files_for_report</text>
+<g id="node4" class="node">
+<title>3</title>
+<path fill="none" stroke="#d8bc56" stroke-width="2" d="M933,-468C933,-468 805,-468 805,-468 799,-468 793,-462 793,-456 793,-456 793,-444 793,-444 793,-438 799,-432 805,-432 805,-432 933,-432 933,-432 939,-432 945,-438 945,-444 945,-444 945,-456 945,-456 945,-462 939,-468 933,-468"/>
+<text text-anchor="middle" x="869" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_genes</text>
 </g>
-<!-- 3&#45;&gt;2 -->
-<g id="edge3" class="edge"><title>3&#45;&gt;2</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M472,-215.697C472,-207.983 472,-198.712 472,-190.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="475.5,-190.104 472,-180.104 468.5,-190.104 475.5,-190.104"/>
+<!-- 3&#45;&gt;0 -->
+<g id="edge4" class="edge">
+<title>3&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M865.892,-431.8777C861.4984,-404.6417 854,-351.4948 854,-306 854,-306 854,-306 854,-162 854,-121.2235 843.4119,-75.0472 835.4967,-46.2247"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="838.8166,-45.1024 832.726,-36.4332 832.081,-47.0083 838.8166,-45.1024"/>
 </g>
 <!-- 4 -->
-<g id="node5" class="node"><title>4</title>
-<path fill="none" stroke="#5692d8" stroke-width="2" d="M89.5,-324C89.5,-324 54.5,-324 54.5,-324 48.5,-324 42.5,-318 42.5,-312 42.5,-312 42.5,-300 42.5,-300 42.5,-294 48.5,-288 54.5,-288 54.5,-288 89.5,-288 89.5,-288 95.5,-288 101.5,-294 101.5,-300 101.5,-300 101.5,-312 101.5,-312 101.5,-318 95.5,-324 89.5,-324"/>
-<text text-anchor="middle" x="72" y="-303.5" font-family="sans" font-size="10.00">pe_fastqc</text>
+<g id="node5" class="node">
+<title>4</title>
+<path fill="none" stroke="#d86656" stroke-width="2" d="M1125,-468C1125,-468 975,-468 975,-468 969,-468 963,-462 963,-456 963,-456 963,-444 963,-444 963,-438 969,-432 975,-432 975,-432 1125,-432 1125,-432 1131,-432 1137,-438 1137,-444 1137,-444 1137,-456 1137,-456 1137,-462 1131,-468 1125,-468"/>
+<text text-anchor="middle" x="1050" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_transcripts</text>
 </g>
-<!-- 4&#45;&gt;3 -->
-<g id="edge12" class="edge"><title>4&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M101.511,-291.172C104.673,-289.982 107.875,-288.893 111,-288 209.889,-259.733 328.553,-246.003 402.13,-239.74"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="402.53,-243.219 412.206,-238.905 401.951,-236.243 402.53,-243.219"/>
+<!-- 4&#45;&gt;0 -->
+<g id="edge2" class="edge">
+<title>4&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1032.0737,-431.7434C1008.7654,-405.9886 971,-356.4717 971,-306 971,-306 971,-306 971,-162 971,-101.0638 905.7286,-56.9075 863.0745,-34.5576"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="864.5862,-31.3998 854.0853,-29.992 861.4163,-37.641 864.5862,-31.3998"/>
 </g>
 <!-- 5 -->
-<g id="node6" class="node"><title>5</title>
-<path fill="none" stroke="#70d856" stroke-width="2" d="M162,-324C162,-324 132,-324 132,-324 126,-324 120,-318 120,-312 120,-312 120,-300 120,-300 120,-294 126,-288 132,-288 132,-288 162,-288 162,-288 168,-288 174,-294 174,-300 174,-300 174,-312 174,-312 174,-318 168,-324 162,-324"/>
-<text text-anchor="middle" x="147" y="-303.5" font-family="sans" font-size="10.00">fastqc</text>
+<g id="node6" class="node">
+<title>5</title>
+<path fill="none" stroke="#b6d856" stroke-width="2" d="M42,-396C42,-396 12,-396 12,-396 6,-396 0,-390 0,-384 0,-384 0,-372 0,-372 0,-366 6,-360 12,-360 12,-360 42,-360 42,-360 48,-360 54,-366 54,-372 54,-372 54,-384 54,-384 54,-390 48,-396 42,-396"/>
+<text text-anchor="middle" x="27" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">fastqc</text>
 </g>
-<!-- 5&#45;&gt;3 -->
-<g id="edge9" class="edge"><title>5&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M174.06,-292.852C178.654,-291.059 183.42,-289.361 188,-288 259.664,-266.71 344.151,-252.245 402.237,-243.874"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="402.996,-247.302 412.405,-242.432 402.013,-240.371 402.996,-247.302"/>
+<!-- 5&#45;&gt;1 -->
+<g id="edge10" class="edge">
+<title>5&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M27.5291,-359.7719C29.6541,-317.3835 40.2588,-210.7263 93,-144 104.2897,-129.7166 120.4546,-118.6219 136.3599,-110.3072"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="138.2306,-113.2875 145.6558,-105.7299 135.1383,-107.0075 138.2306,-113.2875"/>
 </g>
 <!-- 6 -->
-<g id="node7" class="node"><title>6</title>
-<path fill="none" stroke="#d6d856" stroke-width="2" d="M723,-756C723,-756 581,-756 581,-756 575,-756 569,-750 569,-744 569,-744 569,-732 569,-732 569,-726 575,-720 581,-720 581,-720 723,-720 723,-720 729,-720 735,-726 735,-732 735,-732 735,-744 735,-744 735,-750 729,-756 723,-756"/>
-<text text-anchor="middle" x="652" y="-735.5" font-family="sans" font-size="10.00">pe_genome_quantification_kallisto</text>
+<g id="node7" class="node">
+<title>6</title>
+<path fill="none" stroke="#56d87b" stroke-width="2" d="M217.5,-612C217.5,-612 54.5,-612 54.5,-612 48.5,-612 42.5,-606 42.5,-600 42.5,-600 42.5,-588 42.5,-588 42.5,-582 48.5,-576 54.5,-576 54.5,-576 217.5,-576 217.5,-576 223.5,-576 229.5,-582 229.5,-588 229.5,-588 229.5,-600 229.5,-600 229.5,-606 223.5,-612 217.5,-612"/>
+<text text-anchor="middle" x="136" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">pe_genome_quantification_kallisto</text>
 </g>
-<!-- 6&#45;&gt;3 -->
-<g id="edge4" class="edge"><title>6&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M635.198,-719.649C626.555,-709.869 616.498,-697.027 610,-684 576.994,-617.824 568,-596.95 568,-523 568,-523 568,-523 568,-377 568,-328.855 529.657,-284.848 501.435,-258.978"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="503.582,-256.204 493.784,-252.174 498.931,-261.435 503.582,-256.204"/>
+<!-- 6&#45;&gt;1 -->
+<g id="edge5" class="edge">
+<title>6&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M129.8498,-575.5984C121.3372,-548.4466 107,-495.9035 107,-450 107,-450 107,-450 107,-234 107,-192.6022 109.5347,-179.398 131,-144 137.5811,-133.1472 146.9844,-123.1601 156.3555,-114.8041"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="158.7958,-117.3238 164.1571,-108.1855 154.2673,-111.9859 158.7958,-117.3238"/>
 </g>
 <!-- 7 -->
-<g id="node8" class="node"><title>7</title>
-<path fill="none" stroke="#56c1d8" stroke-width="2" d="M463,-756C463,-756 337,-756 337,-756 331,-756 325,-750 325,-744 325,-744 325,-732 325,-732 325,-726 331,-720 337,-720 337,-720 463,-720 463,-720 469,-720 475,-726 475,-732 475,-732 475,-744 475,-744 475,-750 469,-756 463,-756"/>
-<text text-anchor="middle" x="400" y="-735.5" font-family="sans" font-size="10.00">genome_quantification_kallisto</text>
+<g id="node8" class="node">
+<title>7</title>
+<path fill="none" stroke="#5673d8" stroke-width="2" d="M406,-612C406,-612 260,-612 260,-612 254,-612 248,-606 248,-600 248,-600 248,-588 248,-588 248,-582 254,-576 260,-576 260,-576 406,-576 406,-576 412,-576 418,-582 418,-588 418,-588 418,-600 418,-600 418,-606 412,-612 406,-612"/>
+<text text-anchor="middle" x="333" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">genome_quantification_kallisto</text>
 </g>
-<!-- 7&#45;&gt;3 -->
-<g id="edge7" class="edge"><title>7&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M324.739,-723.249C297.831,-715.35 268.805,-703.05 247,-684 213.62,-654.838 202,-639.324 202,-595 202,-595 202,-595 202,-377 202,-286.466 322.383,-253.524 402.383,-241.628"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="402.999,-245.076 412.413,-240.214 402.022,-238.144 402.999,-245.076"/>
+<!-- 7&#45;&gt;1 -->
+<g id="edge9" class="edge">
+<title>7&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M256.4453,-575.9218C233.7902,-567.7741 210.2043,-556.214 192,-540 158.3024,-509.9864 145,-495.1259 145,-450 145,-450 145,-450 145,-234 145,-191.8263 162.802,-145.738 176.0122,-117.3433"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="179.2895,-118.6034 180.4567,-108.0731 172.9774,-115.5772 179.2895,-118.6034"/>
 </g>
 <!-- 8 -->
-<g id="node9" class="node"><title>8</title>
-<path fill="none" stroke="#d8cb56" stroke-width="2" d="M685.5,-396C685.5,-396 620.5,-396 620.5,-396 614.5,-396 608.5,-390 608.5,-384 608.5,-384 608.5,-372 608.5,-372 608.5,-366 614.5,-360 620.5,-360 620.5,-360 685.5,-360 685.5,-360 691.5,-360 697.5,-366 697.5,-372 697.5,-372 697.5,-384 697.5,-384 697.5,-390 691.5,-396 685.5,-396"/>
-<text text-anchor="middle" x="653" y="-375.5" font-family="sans" font-size="10.00">plot_TIN_scores</text>
+<g id="node9" class="node">
+<title>8</title>
+<path fill="none" stroke="#56d8d8" stroke-width="2" d="M279,-252C279,-252 209,-252 209,-252 203,-252 197,-246 197,-240 197,-240 197,-228 197,-228 197,-222 203,-216 209,-216 209,-216 279,-216 279,-216 285,-216 291,-222 291,-228 291,-228 291,-240 291,-240 291,-246 285,-252 279,-252"/>
+<text text-anchor="middle" x="244" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">plot_TIN_scores</text>
 </g>
-<!-- 8&#45;&gt;3 -->
-<g id="edge10" class="edge"><title>8&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M642.58,-359.671C630.158,-340.184 607.807,-308.581 582,-288 565.981,-275.225 546.379,-264.542 528.182,-256.192"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="529.38,-252.895 518.82,-252.039 526.542,-259.293 529.38,-252.895"/>
+<!-- 8&#45;&gt;1 -->
+<g id="edge6" class="edge">
+<title>8&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M229.8968,-215.9479C222.6638,-205.8743 214.2869,-192.8047 209,-180 200.7977,-160.1341 195.9684,-136.2814 193.2325,-118.1244"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="196.6921,-117.5908 191.8539,-108.1652 189.7582,-118.5507 196.6921,-117.5908"/>
 </g>
 <!-- 9 -->
-<g id="node10" class="node"><title>9</title>
-<path fill="none" stroke="#56d87b" stroke-width="2" d="M528,-612C528,-612 416,-612 416,-612 410,-612 404,-606 404,-600 404,-600 404,-588 404,-588 404,-582 410,-576 416,-576 416,-576 528,-576 528,-576 534,-576 540,-582 540,-588 540,-588 540,-600 540,-600 540,-606 534,-612 528,-612"/>
-<text text-anchor="middle" x="472" y="-591.5" font-family="sans" font-size="10.00">salmon_quantmerge_genes</text>
+<g id="node10" class="node">
+<title>9</title>
+<path fill="none" stroke="#56a2d8" stroke-width="2" d="M317.5,-180C317.5,-180 230.5,-180 230.5,-180 224.5,-180 218.5,-174 218.5,-168 218.5,-168 218.5,-156 218.5,-156 218.5,-150 224.5,-144 230.5,-144 230.5,-144 317.5,-144 317.5,-144 323.5,-144 329.5,-150 329.5,-156 329.5,-156 329.5,-168 329.5,-168 329.5,-174 323.5,-180 317.5,-180"/>
+<text text-anchor="middle" x="274" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">alfa_concat_results</text>
 </g>
-<!-- 9&#45;&gt;3 -->
-<g id="edge6" class="edge"><title>9&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M472,-575.951C472,-549.292 472,-496.115 472,-451 472,-451 472,-451 472,-377 472,-336.996 472,-290.653 472,-262.08"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="475.5,-262.049 472,-252.049 468.5,-262.049 475.5,-262.049"/>
+<!-- 9&#45;&gt;1 -->
+<g id="edge7" class="edge">
+<title>9&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M252.8033,-143.8314C242.5566,-135.0485 230.0997,-124.3712 218.9903,-114.8489"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="221.0603,-112.0134 211.19,-108.1628 216.5048,-117.3282 221.0603,-112.0134"/>
 </g>
 <!-- 10 -->
-<g id="node11" class="node"><title>10</title>
-<path fill="none" stroke="#d88556" stroke-width="2" d="M373.5,-612C373.5,-612 242.5,-612 242.5,-612 236.5,-612 230.5,-606 230.5,-600 230.5,-600 230.5,-588 230.5,-588 230.5,-582 236.5,-576 242.5,-576 242.5,-576 373.5,-576 373.5,-576 379.5,-576 385.5,-582 385.5,-588 385.5,-588 385.5,-600 385.5,-600 385.5,-606 379.5,-612 373.5,-612"/>
-<text text-anchor="middle" x="308" y="-591.5" font-family="sans" font-size="10.00">salmon_quantmerge_transcripts</text>
+<g id="node11" class="node">
+<title>10</title>
+<path fill="none" stroke="#5682d8" stroke-width="2" d="M466.5,-180C466.5,-180 359.5,-180 359.5,-180 353.5,-180 347.5,-174 347.5,-168 347.5,-168 347.5,-156 347.5,-156 347.5,-150 353.5,-144 359.5,-144 359.5,-144 466.5,-144 466.5,-144 472.5,-144 478.5,-150 478.5,-156 478.5,-156 478.5,-168 478.5,-168 478.5,-174 472.5,-180 466.5,-180"/>
+<text text-anchor="middle" x="413" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">prepare_multiqc_config</text>
 </g>
-<!-- 10&#45;&gt;3 -->
-<g id="edge5" class="edge"><title>10&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M321.361,-575.721C339.854,-550.027 371,-499.546 371,-451 371,-451 371,-451 371,-377 371,-328.193 411.113,-284.506 440.78,-258.87"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="443.41,-261.233 448.829,-252.129 438.915,-255.867 443.41,-261.233"/>
+<!-- 10&#45;&gt;1 -->
+<g id="edge8" class="edge">
+<title>10&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M357.0155,-143.9243C322.3749,-132.7399 278.1361,-118.4565 243.8922,-107.4002"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="244.654,-103.9683 234.0623,-104.2264 242.5032,-110.6297 244.654,-103.9683"/>
 </g>
 <!-- 11 -->
-<g id="node12" class="node"><title>11</title>
-<path fill="none" stroke="#56a2d8" stroke-width="2" d="M942.5,-612C942.5,-612 911.5,-612 911.5,-612 905.5,-612 899.5,-606 899.5,-600 899.5,-600 899.5,-588 899.5,-588 899.5,-582 905.5,-576 911.5,-576 911.5,-576 942.5,-576 942.5,-576 948.5,-576 954.5,-582 954.5,-588 954.5,-588 954.5,-600 954.5,-600 954.5,-606 948.5,-612 942.5,-612"/>
-<text text-anchor="middle" x="927" y="-591.5" font-family="sans" font-size="10.00">star_rpm</text>
+<g id="node12" class="node">
+<title>11</title>
+<path fill="none" stroke="#d88556" stroke-width="2" d="M689,-324C689,-324 623,-324 623,-324 617,-324 611,-318 611,-312 611,-312 611,-300 611,-300 611,-294 617,-288 623,-288 623,-288 689,-288 689,-288 695,-288 701,-294 701,-300 701,-300 701,-312 701,-312 701,-318 695,-324 689,-324"/>
+<text text-anchor="middle" x="656" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
 </g>
-<!-- 11&#45;&gt;3 -->
-<g id="edge8" class="edge"><title>11&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M899.442,-579.32C860.486,-557.807 794,-512.137 794,-451 794,-451 794,-451 794,-377 794,-267.649 636.61,-241.792 541.903,-236.132"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="541.984,-232.631 531.811,-235.59 541.609,-239.621 541.984,-232.631"/>
-</g>
-<!-- 33 -->
-<g id="node34" class="node"><title>33</title>
-<path fill="none" stroke="#56d89a" stroke-width="2" d="M980,-540C980,-540 874,-540 874,-540 868,-540 862,-534 862,-528 862,-528 862,-516 862,-516 862,-510 868,-504 874,-504 874,-504 980,-504 980,-504 986,-504 992,-510 992,-516 992,-516 992,-528 992,-528 992,-534 986,-540 980,-540"/>
-<text text-anchor="middle" x="927" y="-519.5" font-family="sans" font-size="10.00">rename_star_rpm_for_alfa</text>
-</g>
-<!-- 11&#45;&gt;33 -->
-<g id="edge50" class="edge"><title>11&#45;&gt;33</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M927,-575.697C927,-567.983 927,-558.712 927,-550.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="930.5,-550.104 927,-540.104 923.5,-550.104 930.5,-550.104"/>
+<!-- 11&#45;&gt;2 -->
+<g id="edge12" class="edge">
+<title>11&#45;&gt;2</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M683.5053,-287.8314C697.318,-278.7074 714.2256,-267.539 729.0529,-257.7449"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="731.0886,-260.5949 737.5035,-252.1628 727.2304,-254.7541 731.0886,-260.5949"/>
 </g>
 <!-- 12 -->
-<g id="node13" class="node"><title>12</title>
-<path fill="none" stroke="#5673d8" stroke-width="2" d="M925.5,-324C925.5,-324 848.5,-324 848.5,-324 842.5,-324 836.5,-318 836.5,-312 836.5,-312 836.5,-300 836.5,-300 836.5,-294 842.5,-288 848.5,-288 848.5,-288 925.5,-288 925.5,-288 931.5,-288 937.5,-294 937.5,-300 937.5,-300 937.5,-312 937.5,-312 937.5,-318 931.5,-324 925.5,-324"/>
-<text text-anchor="middle" x="887" y="-303.5" font-family="sans" font-size="10.00">alfa_concat_results</text>
+<g id="node13" class="node">
+<title>12</title>
+<path fill="none" stroke="#56d8c9" stroke-width="2" d="M791,-684C791,-684 711,-684 711,-684 705,-684 699,-678 699,-672 699,-672 699,-660 699,-660 699,-654 705,-648 711,-648 711,-648 791,-648 791,-648 797,-648 803,-654 803,-660 803,-660 803,-672 803,-672 803,-678 797,-684 791,-684"/>
+<text text-anchor="middle" x="751" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">create_index_star</text>
 </g>
-<!-- 12&#45;&gt;3 -->
-<g id="edge11" class="edge"><title>12&#45;&gt;3</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M836.088,-293.61C826.763,-291.647 817.103,-289.696 808,-288 716.334,-270.921 609.924,-254.748 541.829,-244.86"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="542.05,-241.356 531.652,-243.388 541.047,-248.284 542.05,-241.356"/>
+<!-- 12&#45;&gt;2 -->
+<g id="edge11" class="edge">
+<title>12&#45;&gt;2</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M753.9008,-647.8696C758.0015,-620.6233 765,-567.4634 765,-522 765,-522 765,-522 765,-378 765,-337.876 765,-291.4631 765,-262.4177"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="768.5001,-262.1853 765,-252.1854 761.5001,-262.1854 768.5001,-262.1853"/>
 </g>
-<!-- 13 -->
-<g id="node14" class="node"><title>13</title>
-<path fill="none" stroke="#d8a456" stroke-width="2" d="M744,-828C744,-828 632,-828 632,-828 626,-828 620,-822 620,-816 620,-816 620,-804 620,-804 620,-798 626,-792 632,-792 632,-792 744,-792 744,-792 750,-792 756,-798 756,-804 756,-804 756,-816 756,-816 756,-822 750,-828 744,-828"/>
-<text text-anchor="middle" x="688" y="-807.5" font-family="sans" font-size="10.00">pe_remove_polya_cutadapt</text>
+<!-- 22 -->
+<g id="node23" class="node">
+<title>22</title>
+<path fill="none" stroke="#56d85b" stroke-width="2" d="M978.5,-612C978.5,-612 881.5,-612 881.5,-612 875.5,-612 869.5,-606 869.5,-600 869.5,-600 869.5,-588 869.5,-588 869.5,-582 875.5,-576 881.5,-576 881.5,-576 978.5,-576 978.5,-576 984.5,-576 990.5,-582 990.5,-588 990.5,-588 990.5,-600 990.5,-600 990.5,-606 984.5,-612 978.5,-612"/>
+<text text-anchor="middle" x="930" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">create_index_salmon</text>
 </g>
-<!-- 13&#45;&gt;6 -->
-<g id="edge13" class="edge"><title>13&#45;&gt;6</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M679.101,-791.697C675.003,-783.728 670.051,-774.1 665.507,-765.264"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="668.483,-763.396 660.797,-756.104 662.258,-766.598 668.483,-763.396"/>
+<!-- 12&#45;&gt;22 -->
+<g id="edge35" class="edge">
+<title>12&#45;&gt;22</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M796.1693,-647.8314C820.3223,-638.1162 850.2378,-626.0831 875.6556,-615.8592"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="877.1841,-619.017 885.1556,-612.038 874.5718,-612.5227 877.1841,-619.017"/>
 </g>
-<!-- 17 -->
-<g id="node18" class="node"><title>17</title>
-<path fill="none" stroke="#56d85b" stroke-width="2" d="M513.5,-684C513.5,-684 410.5,-684 410.5,-684 404.5,-684 398.5,-678 398.5,-672 398.5,-672 398.5,-660 398.5,-660 398.5,-654 404.5,-648 410.5,-648 410.5,-648 513.5,-648 513.5,-648 519.5,-648 525.5,-654 525.5,-660 525.5,-660 525.5,-672 525.5,-672 525.5,-678 519.5,-684 513.5,-684"/>
-<text text-anchor="middle" x="462" y="-663.5" font-family="sans" font-size="10.00">pe_quantification_salmon</text>
+<!-- 30 -->
+<g id="node31" class="node">
+<title>30</title>
+<path fill="none" stroke="#88d856" stroke-width="2" d="M549.5,-612C549.5,-612 448.5,-612 448.5,-612 442.5,-612 436.5,-606 436.5,-600 436.5,-600 436.5,-588 436.5,-588 436.5,-582 442.5,-576 448.5,-576 448.5,-576 549.5,-576 549.5,-576 555.5,-576 561.5,-582 561.5,-588 561.5,-588 561.5,-600 561.5,-600 561.5,-606 555.5,-612 549.5,-612"/>
+<text text-anchor="middle" x="499" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">pe_map_genome_star</text>
 </g>
-<!-- 13&#45;&gt;17 -->
-<g id="edge30" class="edge"><title>13&#45;&gt;17</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M635.545,-791.953C611.565,-783.007 583.362,-770.808 560,-756 544.498,-746.174 510.194,-713.967 486.583,-691.13"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="488.941,-688.542 479.33,-684.085 484.064,-693.563 488.941,-688.542"/>
+<!-- 12&#45;&gt;30 -->
+<g id="edge50" class="edge">
+<title>12&#45;&gt;30</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M698.768,-650.5447C695.8027,-649.6805 692.8641,-648.8274 690,-648 650.9637,-636.7227 607.3664,-624.3778 571.6913,-614.3413"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="572.4237,-610.9115 561.8496,-611.5745 570.5292,-617.6503 572.4237,-610.9115"/>
 </g>
-<!-- 19 -->
-<g id="node20" class="node"><title>19</title>
-<path fill="none" stroke="#78d856" stroke-width="2" d="M1039.5,-756C1039.5,-756 950.5,-756 950.5,-756 944.5,-756 938.5,-750 938.5,-744 938.5,-744 938.5,-732 938.5,-732 938.5,-726 944.5,-720 950.5,-720 950.5,-720 1039.5,-720 1039.5,-720 1045.5,-720 1051.5,-726 1051.5,-732 1051.5,-732 1051.5,-744 1051.5,-744 1051.5,-750 1045.5,-756 1039.5,-756"/>
-<text text-anchor="middle" x="995" y="-735.5" font-family="sans" font-size="10.00">pe_map_genome_star</text>
+<!-- 33 -->
+<g id="node34" class="node">
+<title>33</title>
+<path fill="none" stroke="#56c1d8" stroke-width="2" d="M674.5,-612C674.5,-612 591.5,-612 591.5,-612 585.5,-612 579.5,-606 579.5,-600 579.5,-600 579.5,-588 579.5,-588 579.5,-582 585.5,-576 591.5,-576 591.5,-576 674.5,-576 674.5,-576 680.5,-576 686.5,-582 686.5,-588 686.5,-588 686.5,-600 686.5,-600 686.5,-606 680.5,-612 674.5,-612"/>
+<text text-anchor="middle" x="633" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">map_genome_star</text>
 </g>
-<!-- 13&#45;&gt;19 -->
-<g id="edge34" class="edge"><title>13&#45;&gt;19</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M756.189,-794.681C802.17,-784.869 864.435,-771.279 928.304,-756.126"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="929.234,-759.502 938.15,-753.78 927.611,-752.693 929.234,-759.502"/>
+<!-- 12&#45;&gt;33 -->
+<g id="edge53" class="edge">
+<title>12&#45;&gt;33</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M721.2236,-647.8314C706.1307,-638.6221 687.6243,-627.3301 671.4657,-617.4706"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="673.1263,-614.3838 662.7669,-612.1628 669.4802,-620.3593 673.1263,-614.3838"/>
 </g>
-<!-- 14 -->
-<g id="node15" class="node"><title>14</title>
-<path fill="none" stroke="#d87556" stroke-width="2" d="M448,-828C448,-828 364,-828 364,-828 358,-828 352,-822 352,-816 352,-816 352,-804 352,-804 352,-798 358,-792 364,-792 364,-792 448,-792 448,-792 454,-792 460,-798 460,-804 460,-804 460,-816 460,-816 460,-822 454,-828 448,-828"/>
-<text text-anchor="middle" x="406" y="-807.5" font-family="sans" font-size="10.00">create_index_kallisto</text>
+<!-- 34 -->
+<g id="node35" class="node">
+<title>34</title>
+<path fill="none" stroke="#d89556" stroke-width="2" d="M725,-396C725,-396 633,-396 633,-396 627,-396 621,-390 621,-384 621,-384 621,-372 621,-372 621,-366 627,-360 633,-360 633,-360 725,-360 725,-360 731,-360 737,-366 737,-372 737,-372 737,-384 737,-384 737,-390 731,-396 725,-396"/>
+<text text-anchor="middle" x="679" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">generate_alfa_index</text>
 </g>
-<!-- 14&#45;&gt;6 -->
-<g id="edge14" class="edge"><title>14&#45;&gt;6</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M460.29,-793.552C496.291,-783.307 543.855,-769.773 582.599,-758.748"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="583.586,-762.106 592.247,-756.003 581.671,-755.374 583.586,-762.106"/>
+<!-- 12&#45;&gt;34 -->
+<g id="edge55" class="edge">
+<title>12&#45;&gt;34</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M746.4961,-647.9843C734.3235,-599.2939 700.699,-464.7961 686.0143,-406.0573"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="689.3231,-404.8614 683.5022,-396.0089 682.5321,-406.5592 689.3231,-404.8614"/>
 </g>
-<!-- 14&#45;&gt;7 -->
-<g id="edge16" class="edge"><title>14&#45;&gt;7</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M404.517,-791.697C403.856,-783.983 403.061,-774.712 402.324,-766.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="405.807,-765.769 401.466,-756.104 398.833,-766.367 405.807,-765.769"/>
+<!-- 13 -->
+<g id="node14" class="node">
+<title>13</title>
+<path fill="none" stroke="#56d0d8" stroke-width="2" d="M926,-540C926,-540 808,-540 808,-540 802,-540 796,-534 796,-528 796,-528 796,-516 796,-516 796,-510 802,-504 808,-504 808,-504 926,-504 926,-504 932,-504 938,-510 938,-516 938,-516 938,-528 938,-528 938,-534 932,-540 926,-540"/>
+<text text-anchor="middle" x="867" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">pe_quantification_salmon</text>
+</g>
+<!-- 13&#45;&gt;3 -->
+<g id="edge14" class="edge">
+<title>13&#45;&gt;3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M867.5047,-503.8314C867.7186,-496.131 867.9729,-486.9743 868.2106,-478.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="871.7094,-478.5066 868.4885,-468.4133 864.7121,-478.3122 871.7094,-478.5066"/>
+</g>
+<!-- 13&#45;&gt;4 -->
+<g id="edge16" class="edge">
+<title>13&#45;&gt;4</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M913.1786,-503.8314C937.9801,-494.0734 968.725,-481.977 994.7843,-471.7242"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="996.1292,-474.9563 1004.1534,-468.038 993.5663,-468.4423 996.1292,-474.9563"/>
+</g>
+<!-- 14 -->
+<g id="node15" class="node">
+<title>14</title>
+<path fill="none" stroke="#c6d856" stroke-width="2" d="M1069.5,-540C1069.5,-540 968.5,-540 968.5,-540 962.5,-540 956.5,-534 956.5,-528 956.5,-528 956.5,-516 956.5,-516 956.5,-510 962.5,-504 968.5,-504 968.5,-504 1069.5,-504 1069.5,-504 1075.5,-504 1081.5,-510 1081.5,-516 1081.5,-516 1081.5,-528 1081.5,-528 1081.5,-534 1075.5,-540 1069.5,-540"/>
+<text text-anchor="middle" x="1019" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">quantification_salmon</text>
+</g>
+<!-- 14&#45;&gt;3 -->
+<g id="edge13" class="edge">
+<title>14&#45;&gt;3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M981.1487,-503.8314C961.2654,-494.2874 936.7218,-482.5065 915.6695,-472.4013"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="917.109,-469.21 906.5791,-468.038 914.0798,-475.5207 917.109,-469.21"/>
+</g>
+<!-- 14&#45;&gt;4 -->
+<g id="edge15" class="edge">
+<title>14&#45;&gt;4</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1026.8226,-503.8314C1030.2109,-495.9617 1034.2541,-486.5712 1038.0076,-477.8533"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1041.3321,-478.9822 1042.0721,-468.4133 1034.9027,-476.214 1041.3321,-478.9822"/>
 </g>
 <!-- 15 -->
-<g id="node16" class="node"><title>15</title>
-<path fill="none" stroke="#56d0d8" stroke-width="2" d="M586,-828C586,-828 490,-828 490,-828 484,-828 478,-822 478,-816 478,-816 478,-804 478,-804 478,-798 484,-792 490,-792 490,-792 586,-792 586,-792 592,-792 598,-798 598,-804 598,-804 598,-816 598,-816 598,-822 592,-828 586,-828"/>
-<text text-anchor="middle" x="538" y="-807.5" font-family="sans" font-size="10.00">remove_polya_cutadapt</text>
+<g id="node16" class="node">
+<title>15</title>
+<path fill="none" stroke="#56b1d8" stroke-width="2" d="M309,-828C309,-828 279,-828 279,-828 273,-828 267,-822 267,-816 267,-816 267,-804 267,-804 267,-798 273,-792 279,-792 279,-792 309,-792 309,-792 315,-792 321,-798 321,-804 321,-804 321,-816 321,-816 321,-822 315,-828 309,-828"/>
+<text text-anchor="middle" x="294" y="-807.5" font-family="sans" font-size="10.00" fill="#000000">start</text>
 </g>
-<!-- 15&#45;&gt;7 -->
-<g id="edge15" class="edge"><title>15&#45;&gt;7</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M504.241,-791.876C485.78,-782.512 462.718,-770.814 442.983,-760.803"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="444.39,-757.592 433.888,-756.19 441.223,-763.835 444.39,-757.592"/>
+<!-- 15&#45;&gt;5 -->
+<g id="edge17" class="edge">
+<title>15&#45;&gt;5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M266.9948,-808.5749C196.9765,-803.2851 15,-778.6966 15,-666 15,-666 15,-666 15,-522 15,-481.7369 19.7166,-435.3594 23.2358,-406.3596"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="26.7452,-406.5021 24.5136,-396.145 19.7993,-405.6332 26.7452,-406.5021"/>
 </g>
-<!-- 18 -->
-<g id="node19" class="node"><title>18</title>
-<path fill="none" stroke="#56d8d8" stroke-width="2" d="M355.5,-684C355.5,-684 268.5,-684 268.5,-684 262.5,-684 256.5,-678 256.5,-672 256.5,-672 256.5,-660 256.5,-660 256.5,-654 262.5,-648 268.5,-648 268.5,-648 355.5,-648 355.5,-648 361.5,-648 367.5,-654 367.5,-660 367.5,-660 367.5,-672 367.5,-672 367.5,-678 361.5,-684 355.5,-684"/>
-<text text-anchor="middle" x="312" y="-663.5" font-family="sans" font-size="10.00">quantification_salmon</text>
+<!-- 23 -->
+<g id="node24" class="node">
+<title>23</title>
+<path fill="none" stroke="#56d86b" stroke-width="2" d="M365.5,-756C365.5,-756 222.5,-756 222.5,-756 216.5,-756 210.5,-750 210.5,-744 210.5,-744 210.5,-732 210.5,-732 210.5,-726 216.5,-720 222.5,-720 222.5,-720 365.5,-720 365.5,-720 371.5,-720 377.5,-726 377.5,-732 377.5,-732 377.5,-744 377.5,-744 377.5,-750 371.5,-756 365.5,-756"/>
+<text text-anchor="middle" x="294" y="-735.5" font-family="sans" font-size="10.00" fill="#000000">pe_remove_adapters_cutadapt</text>
 </g>
-<!-- 15&#45;&gt;18 -->
-<g id="edge32" class="edge"><title>15&#45;&gt;18</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M531.875,-791.656C523.906,-771.551 508.088,-738.779 484,-720 467.061,-706.794 418.711,-692.487 377.572,-682.07"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="378.387,-678.666 367.837,-679.642 376.693,-685.458 378.387,-678.666"/>
+<!-- 15&#45;&gt;23 -->
+<g id="edge37" class="edge">
+<title>15&#45;&gt;23</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M294,-791.8314C294,-784.131 294,-774.9743 294,-766.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="297.5001,-766.4132 294,-756.4133 290.5001,-766.4133 297.5001,-766.4132"/>
 </g>
-<!-- 21 -->
-<g id="node22" class="node"><title>21</title>
-<path fill="none" stroke="#56d8a9" stroke-width="2" d="M908.5,-756C908.5,-756 835.5,-756 835.5,-756 829.5,-756 823.5,-750 823.5,-744 823.5,-744 823.5,-732 823.5,-732 823.5,-726 829.5,-720 835.5,-720 835.5,-720 908.5,-720 908.5,-720 914.5,-720 920.5,-726 920.5,-732 920.5,-732 920.5,-744 920.5,-744 920.5,-750 914.5,-756 908.5,-756"/>
-<text text-anchor="middle" x="872" y="-735.5" font-family="sans" font-size="10.00">map_genome_star</text>
+<!-- 25 -->
+<g id="node26" class="node">
+<title>25</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M677,-756C677,-756 551,-756 551,-756 545,-756 539,-750 539,-744 539,-744 539,-732 539,-732 539,-726 545,-720 551,-720 551,-720 677,-720 677,-720 683,-720 689,-726 689,-732 689,-732 689,-744 689,-744 689,-750 683,-756 677,-756"/>
+<text text-anchor="middle" x="614" y="-735.5" font-family="sans" font-size="10.00" fill="#000000">remove_adapters_cutadapt</text>
 </g>
-<!-- 15&#45;&gt;21 -->
-<g id="edge38" class="edge"><title>15&#45;&gt;21</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M598.122,-794.856C602.477,-793.875 606.804,-792.914 611,-792 680.392,-776.878 760.474,-760.822 813.437,-750.397"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="814.191,-753.816 823.329,-748.454 812.842,-746.947 814.191,-753.816"/>
+<!-- 15&#45;&gt;25 -->
+<g id="edge38" class="edge">
+<title>15&#45;&gt;25</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M321.0072,-803.9234C366.3899,-793.7123 459.7683,-772.7021 528.9702,-757.1317"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="530.0085,-760.4857 538.9963,-754.8758 528.4719,-753.6564 530.0085,-760.4857"/>
 </g>
 <!-- 16 -->
-<g id="node17" class="node"><title>16</title>
-<path fill="none" stroke="#56d8c9" stroke-width="2" d="M714,-540C714,-540 638,-540 638,-540 632,-540 626,-534 626,-528 626,-528 626,-516 626,-516 626,-510 632,-504 638,-504 638,-504 714,-504 714,-504 720,-504 726,-510 726,-516 726,-516 726,-528 726,-528 726,-534 720,-540 714,-540"/>
-<text text-anchor="middle" x="676" y="-519.5" font-family="sans" font-size="10.00">merge_TIN_scores</text>
-</g>
-<!-- 16&#45;&gt;8 -->
-<g id="edge17" class="edge"><title>16&#45;&gt;8</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M673.226,-503.871C669.306,-479.67 662.105,-435.211 657.437,-406.393"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="660.838,-405.501 655.784,-396.189 653.928,-406.62 660.838,-405.501"/>
-</g>
-<!-- 17&#45;&gt;9 -->
-<g id="edge18" class="edge"><title>17&#45;&gt;9</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M464.472,-647.697C465.574,-639.983 466.898,-630.712 468.127,-622.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="471.607,-622.499 469.557,-612.104 464.677,-621.509 471.607,-622.499"/>
-</g>
-<!-- 17&#45;&gt;10 -->
-<g id="edge20" class="edge"><title>17&#45;&gt;10</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M424.327,-647.876C403.368,-638.349 377.095,-626.407 354.823,-616.283"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="356.102,-613.02 345.55,-612.068 353.206,-619.393 356.102,-613.02"/>
-</g>
-<!-- 18&#45;&gt;9 -->
-<g id="edge19" class="edge"><title>18&#45;&gt;9</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M351.14,-647.876C373.013,-638.307 400.457,-626.3 423.662,-616.148"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="425.228,-619.283 432.987,-612.068 422.422,-612.87 425.228,-619.283"/>
-</g>
-<!-- 18&#45;&gt;10 -->
-<g id="edge21" class="edge"><title>18&#45;&gt;10</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M311.011,-647.697C310.57,-639.983 310.041,-630.712 309.549,-622.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="313.042,-621.888 308.977,-612.104 306.054,-622.288 313.042,-621.888"/>
-</g>
-<!-- 19&#45;&gt;11 -->
-<g id="edge24" class="edge"><title>19&#45;&gt;11</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M998.427,-719.921C1001.3,-701.221 1003.33,-670.855 992,-648 985.547,-634.983 974.25,-624.061 962.865,-615.579"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="964.832,-612.685 954.627,-609.839 960.83,-618.428 964.832,-612.685"/>
-</g>
-<!-- 20 -->
-<g id="node21" class="node"><title>20</title>
-<path fill="none" stroke="#56d8b9" stroke-width="2" d="M955,-684C955,-684 805,-684 805,-684 799,-684 793,-678 793,-672 793,-672 793,-660 793,-660 793,-654 799,-648 805,-648 805,-648 955,-648 955,-648 961,-648 967,-654 967,-660 967,-660 967,-672 967,-672 967,-678 961,-684 955,-684"/>
-<text text-anchor="middle" x="880" y="-663.5" font-family="sans" font-size="10.00">index_genomic_alignment_samtools</text>
-</g>
-<!-- 19&#45;&gt;20 -->
-<g id="edge37" class="edge"><title>19&#45;&gt;20</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M966.868,-719.876C951.832,-710.724 933.133,-699.342 916.94,-689.485"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="918.602,-686.4 908.24,-684.19 914.962,-692.379 918.602,-686.4"/>
+<g id="node17" class="node">
+<title>16</title>
+<path fill="none" stroke="#78d856" stroke-width="2" d="M517,-684C517,-684 389,-684 389,-684 383,-684 377,-678 377,-672 377,-672 377,-660 377,-660 377,-654 383,-648 389,-648 389,-648 517,-648 517,-648 523,-648 529,-654 529,-660 529,-660 529,-672 529,-672 529,-678 523,-684 517,-684"/>
+<text text-anchor="middle" x="453" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">pe_remove_polya_cutadapt</text>
+</g>
+<!-- 16&#45;&gt;6 -->
+<g id="edge18" class="edge">
+<title>16&#45;&gt;6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M376.6672,-648.6626C331.0858,-638.3097 272.973,-625.1106 225.2716,-614.2762"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="225.7858,-610.8039 215.2589,-612.002 224.2353,-617.63 225.7858,-610.8039"/>
+</g>
+<!-- 16&#45;&gt;13 -->
+<g id="edge25" class="edge">
+<title>16&#45;&gt;13</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M529.0444,-649.6106C597.3012,-634.8201 687.9868,-614.9393 696,-612 744.2839,-594.2888 796.0604,-565.5158 829.832,-545.2804"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="831.694,-548.2447 838.439,-540.0742 828.071,-542.2552 831.694,-548.2447"/>
+</g>
+<!-- 16&#45;&gt;30 -->
+<g id="edge49" class="edge">
+<title>16&#45;&gt;30</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M464.6077,-647.8314C469.7978,-639.7079 476.0232,-629.9637 481.7425,-621.0118"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="484.8015,-622.7246 487.236,-612.4133 478.9026,-618.9559 484.8015,-622.7246"/>
 </g>
-<!-- 26 -->
-<g id="node27" class="node"><title>26</title>
-<path fill="none" stroke="#56d86b" stroke-width="2" d="M746,-612C746,-612 658,-612 658,-612 652,-612 646,-606 646,-600 646,-600 646,-588 646,-588 646,-582 652,-576 658,-576 658,-576 746,-576 746,-576 752,-576 758,-582 758,-588 758,-588 758,-600 758,-600 758,-606 752,-612 746,-612"/>
-<text text-anchor="middle" x="702" y="-591.5" font-family="sans" font-size="10.00">calculate_TIN_scores</text>
-</g>
-<!-- 19&#45;&gt;26 -->
-<g id="edge44" class="edge"><title>19&#45;&gt;26</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M996.5,-719.984C997.261,-699.884 995.174,-666.809 976,-648 947.195,-619.744 839.886,-605.821 768.42,-599.541"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="768.409,-596.027 758.149,-598.669 767.817,-603.002 768.409,-596.027"/>
-</g>
-<!-- 20&#45;&gt;11 -->
-<g id="edge23" class="edge"><title>20&#45;&gt;11</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M891.618,-647.697C897.139,-639.474 903.847,-629.483 909.932,-620.421"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="912.847,-622.358 915.516,-612.104 907.035,-618.456 912.847,-622.358"/>
+<!-- 17 -->
+<g id="node18" class="node">
+<title>17</title>
+<path fill="none" stroke="#5663d8" stroke-width="2" d="M346.5,-684C346.5,-684 249.5,-684 249.5,-684 243.5,-684 237.5,-678 237.5,-672 237.5,-672 237.5,-660 237.5,-660 237.5,-654 243.5,-648 249.5,-648 249.5,-648 346.5,-648 346.5,-648 352.5,-648 358.5,-654 358.5,-660 358.5,-660 358.5,-672 358.5,-672 358.5,-678 352.5,-684 346.5,-684"/>
+<text text-anchor="middle" x="298" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">create_index_kallisto</text>
+</g>
+<!-- 17&#45;&gt;6 -->
+<g id="edge19" class="edge">
+<title>17&#45;&gt;6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M257.1206,-647.8314C235.454,-638.2018 208.6637,-626.295 185.7922,-616.1299"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="187.1451,-612.9011 176.5855,-612.038 184.3021,-619.2978 187.1451,-612.9011"/>
+</g>
+<!-- 17&#45;&gt;7 -->
+<g id="edge20" class="edge">
+<title>17&#45;&gt;7</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M306.832,-647.8314C310.6986,-639.8771 315.3206,-630.369 319.5968,-621.5723"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="322.8249,-622.9371 324.0491,-612.4133 316.5293,-619.8768 322.8249,-622.9371"/>
 </g>
-<!-- 20&#45;&gt;26 -->
-<g id="edge43" class="edge"><title>20&#45;&gt;26</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M836.456,-647.876C811.798,-638.179 780.777,-625.98 754.746,-615.743"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="755.989,-612.471 745.402,-612.068 753.428,-618.985 755.989,-612.471"/>
+<!-- 18 -->
+<g id="node19" class="node">
+<title>18</title>
+<path fill="none" stroke="#56d8b9" stroke-width="2" d="M669,-684C669,-684 559,-684 559,-684 553,-684 547,-678 547,-672 547,-672 547,-660 547,-660 547,-654 553,-648 559,-648 559,-648 669,-648 669,-648 675,-648 681,-654 681,-660 681,-660 681,-672 681,-672 681,-678 675,-684 669,-684"/>
+<text text-anchor="middle" x="614" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">remove_polya_cutadapt</text>
+</g>
+<!-- 18&#45;&gt;7 -->
+<g id="edge21" class="edge">
+<title>18&#45;&gt;7</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M546.6935,-648.7542C506.7096,-638.5092 455.7534,-625.4528 413.6292,-614.6594"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="414.2344,-611.2015 403.6786,-612.1098 412.4969,-617.9825 414.2344,-611.2015"/>
+</g>
+<!-- 18&#45;&gt;14 -->
+<g id="edge28" class="edge">
+<title>18&#45;&gt;14</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M681.1792,-649.6297C735.4104,-636.1652 804.6626,-618.3114 817,-612 839.4944,-600.4926 838.918,-588.2802 861,-576 887.6283,-561.1915 919.0252,-549.4402 946.7861,-540.7318"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="947.9014,-544.0508 956.4401,-537.7785 945.8536,-537.357 947.9014,-544.0508"/>
+</g>
+<!-- 18&#45;&gt;33 -->
+<g id="edge54" class="edge">
+<title>18&#45;&gt;33</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M618.7945,-647.8314C620.8489,-640.0463 623.296,-630.7729 625.5756,-622.1347"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="628.9735,-622.9753 628.1409,-612.4133 622.2052,-621.1892 628.9735,-622.9753"/>
 </g>
-<!-- 21&#45;&gt;11 -->
-<g id="edge22" class="edge"><title>21&#45;&gt;11</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M916.362,-719.889C941.372,-709.243 968.986,-695.447 976,-684 984.359,-670.357 981.832,-662.899 976,-648 971.803,-637.279 964.308,-627.427 956.422,-619.201"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="958.76,-616.592 949.153,-612.125 953.877,-621.608 958.76,-616.592"/>
+<!-- 19 -->
+<g id="node20" class="node">
+<title>19</title>
+<path fill="none" stroke="#56d88a" stroke-width="2" d="M319.5,-396C319.5,-396 236.5,-396 236.5,-396 230.5,-396 224.5,-390 224.5,-384 224.5,-384 224.5,-372 224.5,-372 224.5,-366 230.5,-360 236.5,-360 236.5,-360 319.5,-360 319.5,-360 325.5,-360 331.5,-366 331.5,-372 331.5,-372 331.5,-384 331.5,-384 331.5,-390 325.5,-396 319.5,-396"/>
+<text text-anchor="middle" x="278" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">merge_TIN_scores</text>
 </g>
-<!-- 21&#45;&gt;20 -->
-<g id="edge36" class="edge"><title>21&#45;&gt;20</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M873.978,-719.697C874.859,-711.983 875.919,-702.712 876.901,-694.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="880.387,-694.437 878.045,-684.104 873.432,-693.642 880.387,-694.437"/>
+<!-- 19&#45;&gt;8 -->
+<g id="edge22" class="edge">
+<title>19&#45;&gt;8</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M273.6939,-359.7623C267.8691,-335.0928 257.4252,-290.8598 250.6048,-261.9731"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="253.9755,-261.0177 248.2712,-252.0896 247.1628,-262.6263 253.9755,-261.0177"/>
 </g>
-<!-- 21&#45;&gt;26 -->
-<g id="edge41" class="edge"><title>21&#45;&gt;26</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M823.356,-730.106C753.776,-719.753 632.766,-699.73 620,-684 609.918,-671.576 612.35,-662.053 620,-648 626.913,-635.301 638.322,-625.181 650.465,-617.33"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="652.587,-620.14 659.382,-612.011 649.001,-614.128 652.587,-620.14"/>
+<!-- 20 -->
+<g id="node21" class="node">
+<title>20</title>
+<path fill="none" stroke="#d87556" stroke-width="2" d="M518,-252C518,-252 426,-252 426,-252 420,-252 414,-246 414,-240 414,-240 414,-228 414,-228 414,-222 420,-216 426,-216 426,-216 518,-216 518,-216 524,-216 530,-222 530,-228 530,-228 530,-240 530,-240 530,-246 524,-252 518,-252"/>
+<text text-anchor="middle" x="472" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc_all_samples</text>
 </g>
-<!-- 22 -->
-<g id="node23" class="node"><title>22</title>
-<path fill="none" stroke="#5682d8" stroke-width="2" d="M941.5,-396C941.5,-396 860.5,-396 860.5,-396 854.5,-396 848.5,-390 848.5,-384 848.5,-384 848.5,-372 848.5,-372 848.5,-366 854.5,-360 860.5,-360 860.5,-360 941.5,-360 941.5,-360 947.5,-360 953.5,-366 953.5,-372 953.5,-372 953.5,-384 953.5,-384 953.5,-390 947.5,-396 941.5,-396"/>
-<text text-anchor="middle" x="901" y="-375.5" font-family="sans" font-size="10.00">alfa_qc_all_samples</text>
+<!-- 20&#45;&gt;9 -->
+<g id="edge23" class="edge">
+<title>20&#45;&gt;9</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M422.2918,-215.9243C395.2241,-206.0815 361.5561,-193.8386 333.1451,-183.5073"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="334.3227,-180.2114 323.7286,-180.0831 331.9305,-186.7899 334.3227,-180.2114"/>
 </g>
-<!-- 22&#45;&gt;12 -->
-<g id="edge25" class="edge"><title>22&#45;&gt;12</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M897.539,-359.697C895.997,-351.983 894.142,-342.712 892.422,-334.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="895.814,-333.224 890.421,-324.104 888.95,-334.597 895.814,-333.224"/>
+<!-- 21 -->
+<g id="node22" class="node">
+<title>21</title>
+<path fill="none" stroke="#d85656" stroke-width="2" d="M591,-396C591,-396 469,-396 469,-396 463,-396 457,-390 457,-384 457,-384 457,-372 457,-372 457,-366 463,-360 469,-360 469,-360 591,-360 591,-360 597,-360 603,-366 603,-372 603,-372 603,-384 603,-384 603,-390 597,-396 591,-396"/>
+<text text-anchor="middle" x="530" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text>
 </g>
-<!-- 23 -->
-<g id="node24" class="node"><title>23</title>
-<path fill="none" stroke="#61d856" stroke-width="2" d="M758,-900C758,-900 632,-900 632,-900 626,-900 620,-894 620,-888 620,-888 620,-876 620,-876 620,-870 626,-864 632,-864 632,-864 758,-864 758,-864 764,-864 770,-870 770,-876 770,-876 770,-888 770,-888 770,-894 764,-900 758,-900"/>
-<text text-anchor="middle" x="695" y="-879.5" font-family="sans" font-size="10.00">pe_remove_adapters_cutadapt</text>
+<!-- 21&#45;&gt;11 -->
+<g id="edge24" class="edge">
+<title>21&#45;&gt;11</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M561.7951,-359.8314C578.0605,-350.5368 598.0386,-339.1208 615.4051,-329.1971"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="617.2691,-332.1631 624.2151,-324.1628 613.7961,-326.0854 617.2691,-332.1631"/>
 </g>
-<!-- 23&#45;&gt;13 -->
-<g id="edge26" class="edge"><title>23&#45;&gt;13</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M693.27,-863.697C692.498,-855.983 691.571,-846.712 690.711,-838.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="694.188,-837.706 689.71,-828.104 687.223,-838.403 694.188,-837.706"/>
+<!-- 27 -->
+<g id="node28" class="node">
+<title>27</title>
+<path fill="none" stroke="#56d8a9" stroke-width="2" d="M545,-324C545,-324 515,-324 515,-324 509,-324 503,-318 503,-312 503,-312 503,-300 503,-300 503,-294 509,-288 515,-288 515,-288 545,-288 545,-288 551,-288 557,-294 557,-300 557,-300 557,-312 557,-312 557,-318 551,-324 545,-324"/>
+<text text-anchor="middle" x="530" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</text>
+</g>
+<!-- 21&#45;&gt;27 -->
+<g id="edge43" class="edge">
+<title>21&#45;&gt;27</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M530,-359.8314C530,-352.131 530,-342.9743 530,-334.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="533.5001,-334.4132 530,-324.4133 526.5001,-334.4133 533.5001,-334.4132"/>
+</g>
+<!-- 22&#45;&gt;13 -->
+<g id="edge26" class="edge">
+<title>22&#45;&gt;13</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M914.1024,-575.8314C906.7722,-567.454 897.934,-557.3531 889.9031,-548.1749"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="892.3307,-545.6343 883.1116,-540.4133 887.0627,-550.2438 892.3307,-545.6343"/>
+</g>
+<!-- 22&#45;&gt;14 -->
+<g id="edge27" class="edge">
+<title>22&#45;&gt;14</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M952.4585,-575.8314C963.4205,-566.9632 976.7699,-556.1637 988.6265,-546.5718"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="990.9755,-549.1734 996.5487,-540.1628 986.5729,-543.7313 990.9755,-549.1734"/>
+</g>
+<!-- 23&#45;&gt;16 -->
+<g id="edge29" class="edge">
+<title>23&#45;&gt;16</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M334.1224,-719.8314C355.2932,-710.2446 381.4483,-698.4008 403.8303,-688.2655"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="405.5003,-691.3515 413.1661,-684.038 402.6128,-684.9748 405.5003,-691.3515"/>
 </g>
 <!-- 24 -->
-<g id="node25" class="node"><title>24</title>
-<path fill="none" stroke="#d89556" stroke-width="2" d="M359.5,-900C359.5,-900 272.5,-900 272.5,-900 266.5,-900 260.5,-894 260.5,-888 260.5,-888 260.5,-876 260.5,-876 260.5,-870 266.5,-864 272.5,-864 272.5,-864 359.5,-864 359.5,-864 365.5,-864 371.5,-870 371.5,-876 371.5,-876 371.5,-888 371.5,-888 371.5,-894 365.5,-900 359.5,-900"/>
-<text text-anchor="middle" x="316" y="-879.5" font-family="sans" font-size="10.00">extract_transcriptome</text>
-</g>
-<!-- 24&#45;&gt;14 -->
-<g id="edge27" class="edge"><title>24&#45;&gt;14</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M338.247,-863.697C349.582,-854.881 363.53,-844.032 375.819,-834.474"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="378.264,-837.007 384.009,-828.104 373.966,-831.481 378.264,-837.007"/>
+<g id="node25" class="node">
+<title>24</title>
+<path fill="none" stroke="#5692d8" stroke-width="2" d="M508.5,-756C508.5,-756 407.5,-756 407.5,-756 401.5,-756 395.5,-750 395.5,-744 395.5,-744 395.5,-732 395.5,-732 395.5,-726 401.5,-720 407.5,-720 407.5,-720 508.5,-720 508.5,-720 514.5,-720 520.5,-726 520.5,-732 520.5,-732 520.5,-744 520.5,-744 520.5,-750 514.5,-756 508.5,-756"/>
+<text text-anchor="middle" x="458" y="-735.5" font-family="sans" font-size="10.00" fill="#000000">extract_transcriptome</text>
 </g>
-<!-- 31 -->
-<g id="node32" class="node"><title>31</title>
-<path fill="none" stroke="#d86656" stroke-width="2" d="M321.5,-828C321.5,-828 150.5,-828 150.5,-828 144.5,-828 138.5,-822 138.5,-816 138.5,-816 138.5,-804 138.5,-804 138.5,-798 144.5,-792 150.5,-792 150.5,-792 321.5,-792 321.5,-792 327.5,-792 333.5,-798 333.5,-804 333.5,-804 333.5,-816 333.5,-816 333.5,-822 327.5,-828 321.5,-828"/>
-<text text-anchor="middle" x="236" y="-807.5" font-family="sans" font-size="10.00">concatenate_transcriptome_and_genome</text>
-</g>
-<!-- 24&#45;&gt;31 -->
-<g id="edge49" class="edge"><title>24&#45;&gt;31</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M296.225,-863.697C286.246,-854.965 273.989,-844.24 263.143,-834.75"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="265.378,-832.055 255.548,-828.104 260.769,-837.323 265.378,-832.055"/>
-</g>
-<!-- 25 -->
-<g id="node26" class="node"><title>25</title>
-<path fill="none" stroke="#c6d856" stroke-width="2" d="M590,-900C590,-900 480,-900 480,-900 474,-900 468,-894 468,-888 468,-888 468,-876 468,-876 468,-870 474,-864 480,-864 480,-864 590,-864 590,-864 596,-864 602,-870 602,-876 602,-876 602,-888 602,-888 602,-894 596,-900 590,-900"/>
-<text text-anchor="middle" x="535" y="-879.5" font-family="sans" font-size="10.00">remove_adapters_cutadapt</text>
+<!-- 24&#45;&gt;17 -->
+<g id="edge30" class="edge">
+<title>24&#45;&gt;17</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M417.6252,-719.8314C396.3213,-710.2446 370.0017,-698.4008 347.4789,-688.2655"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="348.6399,-684.95 338.0844,-684.038 345.7674,-691.3334 348.6399,-684.95"/>
 </g>
-<!-- 25&#45;&gt;15 -->
-<g id="edge28" class="edge"><title>25&#45;&gt;15</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M535.742,-863.697C536.072,-855.983 536.469,-846.712 536.838,-838.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="540.335,-838.245 537.267,-828.104 533.342,-837.945 540.335,-838.245"/>
-</g>
-<!-- 26&#45;&gt;16 -->
-<g id="edge29" class="edge"><title>26&#45;&gt;16</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M695.573,-575.697C692.645,-567.813 689.113,-558.304 685.86,-549.546"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="689.116,-548.26 682.353,-540.104 682.554,-550.697 689.116,-548.26"/>
-</g>
-<!-- 27 -->
-<g id="node28" class="node"><title>27</title>
-<path fill="none" stroke="#d85656" stroke-width="2" d="M283.5,-756C283.5,-756 198.5,-756 198.5,-756 192.5,-756 186.5,-750 186.5,-744 186.5,-744 186.5,-732 186.5,-732 186.5,-726 192.5,-720 198.5,-720 198.5,-720 283.5,-720 283.5,-720 289.5,-720 295.5,-726 295.5,-732 295.5,-732 295.5,-744 295.5,-744 295.5,-750 289.5,-756 283.5,-756"/>
-<text text-anchor="middle" x="241" y="-735.5" font-family="sans" font-size="10.00">create_index_salmon</text>
-</g>
-<!-- 27&#45;&gt;17 -->
-<g id="edge31" class="edge"><title>27&#45;&gt;17</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M294.78,-719.966C325.927,-710.1 365.323,-697.622 398.052,-687.255"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="399.502,-690.467 407.979,-684.111 397.389,-683.794 399.502,-690.467"/>
+<!-- 29 -->
+<g id="node30" class="node">
+<title>29</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M1027,-684C1027,-684 833,-684 833,-684 827,-684 821,-678 821,-672 821,-672 821,-660 821,-660 821,-654 827,-648 833,-648 833,-648 1027,-648 1027,-648 1033,-648 1039,-654 1039,-660 1039,-660 1039,-672 1039,-672 1039,-678 1033,-684 1027,-684"/>
+<text text-anchor="middle" x="930" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">concatenate_transcriptome_and_genome</text>
+</g>
+<!-- 24&#45;&gt;29 -->
+<g id="edge48" class="edge">
+<title>24&#45;&gt;29</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M520.7325,-721.8538C523.859,-721.1946 526.961,-720.5718 530,-720 651.0189,-697.2303 685.1517,-701.2979 810.7194,-684.1497"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="811.2969,-687.6032 820.7227,-682.7654 810.3373,-680.6693 811.2969,-687.6032"/>
+</g>
+<!-- 25&#45;&gt;18 -->
+<g id="edge31" class="edge">
+<title>25&#45;&gt;18</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M614,-719.8314C614,-712.131 614,-702.9743 614,-694.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="617.5001,-694.4132 614,-684.4133 610.5001,-694.4133 617.5001,-694.4132"/>
 </g>
-<!-- 27&#45;&gt;18 -->
-<g id="edge33" class="edge"><title>27&#45;&gt;18</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M258.551,-719.697C267.234,-711.135 277.863,-700.656 287.348,-691.304"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="289.988,-693.617 294.651,-684.104 285.073,-688.633 289.988,-693.617"/>
+<!-- 26 -->
+<g id="node27" class="node">
+<title>26</title>
+<path fill="none" stroke="#97d856" stroke-width="2" d="M338.5,-468C338.5,-468 243.5,-468 243.5,-468 237.5,-468 231.5,-462 231.5,-456 231.5,-456 231.5,-444 231.5,-444 231.5,-438 237.5,-432 243.5,-432 243.5,-432 338.5,-432 338.5,-432 344.5,-432 350.5,-438 350.5,-444 350.5,-444 350.5,-456 350.5,-456 350.5,-462 344.5,-468 338.5,-468"/>
+<text text-anchor="middle" x="291" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">calculate_TIN_scores</text>
+</g>
+<!-- 26&#45;&gt;19 -->
+<g id="edge32" class="edge">
+<title>26&#45;&gt;19</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M287.7196,-431.8314C286.3292,-424.131 284.6759,-414.9743 283.1308,-406.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="286.5458,-405.6322 281.3246,-396.4133 279.6572,-406.8761 286.5458,-405.6322"/>
+</g>
+<!-- 27&#45;&gt;20 -->
+<g id="edge33" class="edge">
+<title>27&#45;&gt;20</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M515.3642,-287.8314C508.6839,-279.5386 500.6432,-269.557 493.3096,-260.4533"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="495.8319,-258.0052 486.8329,-252.4133 490.3806,-262.3965 495.8319,-258.0052"/>
 </g>
 <!-- 28 -->
-<g id="node29" class="node"><title>28</title>
-<path fill="none" stroke="#5663d8" stroke-width="2" d="M1030,-828C1030,-828 960,-828 960,-828 954,-828 948,-822 948,-816 948,-816 948,-804 948,-804 948,-798 954,-792 960,-792 960,-792 1030,-792 1030,-792 1036,-792 1042,-798 1042,-804 1042,-804 1042,-816 1042,-816 1042,-822 1036,-828 1030,-828"/>
-<text text-anchor="middle" x="995" y="-807.5" font-family="sans" font-size="10.00">create_index_star</text>
-</g>
-<!-- 28&#45;&gt;19 -->
-<g id="edge35" class="edge"><title>28&#45;&gt;19</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M995,-791.697C995,-783.983 995,-774.712 995,-766.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="998.5,-766.104 995,-756.104 991.5,-766.104 998.5,-766.104"/>
+<g id="node29" class="node">
+<title>28</title>
+<path fill="none" stroke="#d8a456" stroke-width="2" d="M609,-468C609,-468 573,-468 573,-468 567,-468 561,-462 561,-456 561,-456 561,-444 561,-444 561,-438 567,-432 573,-432 573,-432 609,-432 609,-432 615,-432 621,-438 621,-444 621,-444 621,-456 621,-456 621,-462 615,-468 609,-468"/>
+<text text-anchor="middle" x="591" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">star_rpm</text>
 </g>
 <!-- 28&#45;&gt;21 -->
-<g id="edge39" class="edge"><title>28&#45;&gt;21</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M964.911,-791.876C948.68,-782.639 928.458,-771.131 911.029,-761.212"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="912.627,-758.094 902.205,-756.19 909.165,-764.178 912.627,-758.094"/>
-</g>
-<!-- 34 -->
-<g id="node35" class="node"><title>34</title>
-<path fill="none" stroke="#56b1d8" stroke-width="2" d="M1126,-540C1126,-540 1046,-540 1046,-540 1040,-540 1034,-534 1034,-528 1034,-528 1034,-516 1034,-516 1034,-510 1040,-504 1046,-504 1046,-504 1126,-504 1126,-504 1132,-504 1138,-510 1138,-516 1138,-516 1138,-528 1138,-528 1138,-534 1132,-540 1126,-540"/>
-<text text-anchor="middle" x="1086" y="-519.5" font-family="sans" font-size="10.00">generate_alfa_index</text>
-</g>
-<!-- 28&#45;&gt;34 -->
-<g id="edge51" class="edge"><title>28&#45;&gt;34</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1025.63,-791.97C1038.75,-783.028 1052.89,-770.827 1061,-756 1097.51,-689.252 1094.02,-595.687 1089.49,-550.104"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="1092.96,-549.666 1088.4,-540.104 1086,-550.425 1092.96,-549.666"/>
-</g>
-<!-- 29 -->
-<g id="node30" class="node"><title>29</title>
-<path fill="none" stroke="#b6d856" stroke-width="2" d="M942,-468C942,-468 912,-468 912,-468 906,-468 900,-462 900,-456 900,-456 900,-444 900,-444 900,-438 906,-432 912,-432 912,-432 942,-432 942,-432 948,-432 954,-438 954,-444 954,-444 954,-456 954,-456 954,-462 948,-468 942,-468"/>
-<text text-anchor="middle" x="927" y="-447.5" font-family="sans" font-size="10.00">alfa_qc</text>
+<g id="edge34" class="edge">
+<title>28&#45;&gt;21</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M575.6071,-431.8314C568.5096,-423.454 559.952,-413.3531 552.176,-404.1749"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="554.7348,-401.7807 545.6001,-396.4133 549.3939,-406.3056 554.7348,-401.7807"/>
 </g>
 <!-- 29&#45;&gt;22 -->
-<g id="edge40" class="edge"><title>29&#45;&gt;22</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M920.573,-431.697C917.645,-423.813 914.113,-414.304 910.86,-405.546"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="914.116,-404.26 907.353,-396.104 907.554,-406.697 914.116,-404.26"/>
-</g>
-<!-- 30 -->
-<g id="node31" class="node"><title>30</title>
-<path fill="none" stroke="#a7d856" stroke-width="2" d="M762.5,-684C762.5,-684 641.5,-684 641.5,-684 635.5,-684 629.5,-678 629.5,-672 629.5,-672 629.5,-660 629.5,-660 629.5,-654 635.5,-648 641.5,-648 641.5,-648 762.5,-648 762.5,-648 768.5,-648 774.5,-654 774.5,-660 774.5,-660 774.5,-672 774.5,-672 774.5,-678 768.5,-684 762.5,-684"/>
-<text text-anchor="middle" x="702" y="-663.5" font-family="sans" font-size="10.00">extract_transcripts_as_bed12</text>
+<g id="edge36" class="edge">
+<title>29&#45;&gt;22</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M930,-647.8314C930,-640.131 930,-630.9743 930,-622.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="933.5001,-622.4132 930,-612.4133 926.5001,-622.4133 933.5001,-622.4132"/>
 </g>
 <!-- 30&#45;&gt;26 -->
-<g id="edge42" class="edge"><title>30&#45;&gt;26</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M702,-647.697C702,-639.983 702,-630.712 702,-622.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="705.5,-622.104 702,-612.104 698.5,-622.104 705.5,-622.104"/>
+<g id="edge40" class="edge">
+<title>30&#45;&gt;26</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M436.2442,-577.9722C433.1239,-577.2817 430.0296,-576.6199 427,-576 377.3918,-565.85 234.8551,-578.5298 202,-540 191.6184,-527.8253 194.1512,-517.9426 202,-504 209.2034,-491.2038 220.7994,-481.0907 233.2742,-473.2465"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="235.1189,-476.2227 242.0078,-468.1733 231.6028,-470.1698 235.1189,-476.2227"/>
+</g>
+<!-- 30&#45;&gt;28 -->
+<g id="edge46" class="edge">
+<title>30&#45;&gt;28</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M552.7084,-575.7905C568.8649,-567.5107 584.7454,-555.9057 594,-540 604.8131,-521.4157 603.1421,-496.8239 599.2798,-478.0433"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="602.6794,-477.2099 596.974,-468.2825 595.8669,-478.8193 602.6794,-477.2099"/>
 </g>
-<!-- 31&#45;&gt;27 -->
-<g id="edge45" class="edge"><title>31&#45;&gt;27</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M237.236,-791.697C237.787,-783.983 238.449,-774.712 239.063,-766.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="242.557,-766.328 239.778,-756.104 235.575,-765.83 242.557,-766.328"/>
+<!-- 31 -->
+<g id="node32" class="node">
+<title>31</title>
+<path fill="none" stroke="#56d89a" stroke-width="2" d="M573,-540C573,-540 401,-540 401,-540 395,-540 389,-534 389,-528 389,-528 389,-516 389,-516 389,-510 395,-504 401,-504 401,-504 573,-504 573,-504 579,-504 585,-510 585,-516 585,-516 585,-528 585,-528 585,-534 579,-540 573,-540"/>
+<text text-anchor="middle" x="487" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">index_genomic_alignment_samtools</text>
+</g>
+<!-- 30&#45;&gt;31 -->
+<g id="edge52" class="edge">
+<title>30&#45;&gt;31</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M495.9719,-575.8314C494.6885,-568.131 493.1624,-558.9743 491.7361,-550.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="495.1653,-549.7018 490.0689,-540.4133 488.2606,-550.8526 495.1653,-549.7018"/>
+</g>
+<!-- 31&#45;&gt;26 -->
+<g id="edge42" class="edge">
+<title>31&#45;&gt;26</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M437.7939,-503.9243C411.1161,-494.1243 377.9614,-481.945 349.9148,-471.6422"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="350.8199,-468.246 340.2263,-468.0831 348.4062,-474.8167 350.8199,-468.246"/>
+</g>
+<!-- 31&#45;&gt;28 -->
+<g id="edge47" class="edge">
+<title>31&#45;&gt;28</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M513.2436,-503.8314C526.2995,-494.7927 542.2535,-483.7476 556.3047,-474.0198"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="558.5351,-476.7326 564.7648,-468.1628 554.5506,-470.9773 558.5351,-476.7326"/>
 </g>
 <!-- 32 -->
-<g id="node33" class="node"><title>32</title>
-<path fill="none" stroke="#d8bc56" stroke-width="2" d="M108,-828C108,-828 12,-828 12,-828 6,-828 0,-822 0,-816 0,-816 0,-804 0,-804 0,-798 6,-792 12,-792 12,-792 108,-792 108,-792 114,-792 120,-798 120,-804 120,-804 120,-816 120,-816 120,-822 114,-828 108,-828"/>
-<text text-anchor="middle" x="60" y="-807.5" font-family="sans" font-size="10.00">extract_decoys_salmon</text>
-</g>
-<!-- 32&#45;&gt;27 -->
-<g id="edge46" class="edge"><title>32&#45;&gt;27</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M104.278,-791.876C129.351,-782.179 160.896,-769.98 187.365,-759.743"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="188.802,-762.94 196.866,-756.068 186.277,-756.411 188.802,-762.94"/>
-</g>
-<!-- 33&#45;&gt;29 -->
-<g id="edge47" class="edge"><title>33&#45;&gt;29</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M927,-503.697C927,-495.983 927,-486.712 927,-478.112"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="930.5,-478.104 927,-468.104 923.5,-478.104 930.5,-478.104"/>
-</g>
-<!-- 34&#45;&gt;29 -->
-<g id="edge48" class="edge"><title>34&#45;&gt;29</title>
-<path fill="none" stroke="grey" stroke-width="2" d="M1047.1,-503.876C1021.51,-492.607 988.231,-477.957 963.198,-466.936"/>
-<polygon fill="grey" stroke="grey" stroke-width="2" points="964.604,-463.731 954.041,-462.905 961.783,-470.138 964.604,-463.731"/>
+<g id="node33" class="node">
+<title>32</title>
+<path fill="none" stroke="#61d856" stroke-width="2" d="M359,-540C359,-540 223,-540 223,-540 217,-540 211,-534 211,-528 211,-528 211,-516 211,-516 211,-510 217,-504 223,-504 223,-504 359,-504 359,-504 365,-504 371,-510 371,-516 371,-516 371,-528 371,-528 371,-534 365,-540 359,-540"/>
+<text text-anchor="middle" x="291" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">extract_transcripts_as_bed12</text>
+</g>
+<!-- 32&#45;&gt;26 -->
+<g id="edge41" class="edge">
+<title>32&#45;&gt;26</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M291,-503.8314C291,-496.131 291,-486.9743 291,-478.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="294.5001,-478.4132 291,-468.4133 287.5001,-478.4133 294.5001,-478.4132"/>
+</g>
+<!-- 33&#45;&gt;26 -->
+<g id="edge39" class="edge">
+<title>33&#45;&gt;26</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M630.2977,-575.6979C626.2231,-554.9601 616.4396,-521.746 594,-504 558.7533,-476.1257 439.0231,-461.5688 361.0402,-454.8624"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="361.0572,-451.3517 350.8003,-454.0061 360.4738,-458.3274 361.0572,-451.3517"/>
+</g>
+<!-- 33&#45;&gt;28 -->
+<g id="edge45" class="edge">
+<title>33&#45;&gt;28</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M647.947,-575.85C661.321,-557.2624 677.0963,-527.8017 665,-504 657.4342,-489.1129 643.6258,-477.3535 629.9685,-468.6606"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="631.4689,-465.4812 621.0827,-463.3889 627.8972,-471.5014 631.4689,-465.4812"/>
+</g>
+<!-- 33&#45;&gt;31 -->
+<g id="edge51" class="edge">
+<title>33&#45;&gt;31</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M596.158,-575.8314C576.8918,-566.3302 553.1301,-554.6121 532.7008,-544.5374"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="534.0938,-541.3219 523.577,-540.038 530.9977,-547.6 534.0938,-541.3219"/>
+</g>
+<!-- 34&#45;&gt;27 -->
+<g id="edge44" class="edge">
+<title>34&#45;&gt;27</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M641.401,-359.8314C618.3665,-348.7006 589.0355,-334.5272 566.2526,-323.5181"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="567.7689,-320.3636 557.2422,-319.164 564.7233,-326.6663 567.7689,-320.3636"/>
 </g>
 </g>
 </svg>
diff --git a/pipeline_documentation.md b/pipeline_documentation.md
index b34ee66b376c8193e8508101996ce24e346ffa27..0b22e0e02710c114274c4fba92a6b933e1882f6b 100644
--- a/pipeline_documentation.md
+++ b/pipeline_documentation.md
@@ -3,39 +3,36 @@ This document describes the individual rules of the pipeline for information pur
 
 ## Overview
 ### General
-* read samples table
-* create log directories
-* **create_index_star**
-* **extract_transcriptome**
-* **extract_decoys_salmon**
-* **concatenate_transcriptome_and_genome**
-* **create_index_salmon**
-* **create_index_kallisto**
-* **extract_transcripts_as_bed12**
-* **index_genomic_alignment_samtools**
-* **star_rpm**
-* **rename_star_rpm_for_alfa**
-* **calculate_TIN_scores**
-* **merge_TIN_scores**
-* **plot_TIN_scores**
-* **salmon_quantmerge_genes**
-* **salmon_quantmerge_transcripts**
-* **generate_alfa_index**
-* **alfa_qc**
-* **alfa_qc_all_samples**
-* **alfa_concat_results**
-* **prepare_files_for_report**
-* **prepare_MultiQC_config**
-* **MULTIQC_report**
+* [read samples table](#read-samples-table)
+* [create log directories](#create-log-directories)
+* **[create_index_star](#create_index_star)**
+* **[extract_transcriptome](#extract_transcriptome)**
+* **[create_index_salmon](#create_index_salmon)**
+* **[create_index_kallisto](#create_index_kallisto)**
+* **[extract_transcripts_as_bed12](#extract_transcripts_as_bed12)**
+* **[index_genomic_alignment_samtools](#index_genomic_alignment_samtools)**
+* **[star_rpm](#star_rpm)**
+* **[rename_star_rpm_for_alfa](#rename_star_rpm_for_alfa)**
+* **[calculate_TIN_scores](#calculate_TIN_scores)**
+* **[merge_TIN_scores](#merge_TIN_scores)**
+* **[plot_TIN_scores](#plot_TIN_scores)**
+* **[salmon_quantmerge_genes](#salmon_quantmerge_genes)**
+* **[salmon_quantmerge_transcripts](#salmon_quantmerge_transcripts)**
+* **[generate_alfa_index](#generate_alfa_index)**
+* **[alfa_qc](#alfa_qc)**
+* **[alfa_qc_all_samples](#alfa_qc_all_samples)**
+* **[prepare_files_for_report](#prepare_files_for_report)**
+* **[prepare_MultiQC_config](#prepare_MultiQC_config)**
+* **[MULTIQC_report](#MULTIQC_report)**
+* **[sort_bed_4_big](#sort_bed_4_big)**
 
 ### Sequencing mode specific
-* **(pe_)fastqc**
-* **(pe_)remove_adapters_cutadapt**
-* **(pe_)remove_polya_cutadapt**
-* **(pe_)map_genome_star**
-* **(pe_)quantification_salmon**
-* **(pe_)genome_quantification_kallisto**
-
+* **[(pe_)fastqc](#(pe_)fastqc)**
+* **[(pe_)remove_adapters_cutadapt](#(pe_)remove_adapters_cutadapt)**
+* **[(pe_)remove_polya_cutadapt](#(pe_)remove_polya_cutadapt)**
+* **[(pe_)map_genome_star](#(pe_)map_genome_star)**
+* **[(pe_)quantification_salmon](#(pe_)quantification_salmon)**
+* **[(pe_)genome_quantification_kallisto](#(pe_)genome_quantification_kallisto)**
 
 
 
@@ -100,23 +97,7 @@ Create transcriptome from genome and gene annotations using [gffread](https://gi
 **Input:** `genome` and `gtf` of the input samples table    
 **Output:** transcriptome fasta file.    
 
-
-#### extract_decoys_salmon
-Salmon indexing requires the names of the genome targets (https://combine-lab.github.io/alevin-tutorial/2019/selective-alignment/). Extract target names from the genome.
-
-
-**Input:** `genome` of the input samples table    
-**Output:** text file with the genome targert names   
-
-
-#### concatenate_transcriptome_and_genome
-Salmon indexing requires concatenated transcriptome and genome reference file (https://combine-lab.github.io/alevin-tutorial/2019/selective-alignment/).
-
-
-**Input:** `genome` of the input samples table and extracted transcriptome    
-**Output:** fasta file with concatenated genome and transcriptome   
-
-
+ 
 #### create_index_salmon
 Create index for [Salmon](https://salmon.readthedocs.io/en/latest/salmon.html) quantification. Salmon index of transcriptome, required for mapping-based mode of Salmon. The index is created via an auxiliary k-mer hash over k-mers of length 31. While mapping algorithms will make use of arbitrarily long matches between the query and reference, the k-mer size selected here will act as the minimum acceptable length for a valid match.  A k-mer size of 31 seems to work well for reads of 75bp or longer, although smaller size might improve sensitivity. A smaller k-mer size is suggested when working with shorter reads.
 
@@ -263,6 +244,18 @@ Interactive report of the various workflow steps. [MultiQC](https://multiqc.info
 **Input:** Config file fort MultiQC in .yaml format
 **Output:** Directory with automatically generated HTML report
 
+#### sort_bed_4_big
+Sorts bedgraph files for creating bigWig files. Using [bedtools sortBed](https://bedtools.readthedocs.io/en/latest/content/tools/sort.html)    
+
+**Input:**  bedgraph files from `rename_star_rpm_for_alfa`    
+**Output:** sorted bedgraph files    
+
+
+#### prepare_bigWig
+Check out some infos on bigWig files and [bedGraphtobigWig](http://genome.ucsc.edu/goldenPath/help/bigWig.html).    
+
+**Input:** sorted bedgraph files, chromosome sizes from create_STAR_index    
+**Output:** one bigWig file per sample and strand     
 
 
 ### Sequencing mode specific rules
diff --git a/scripts/labkey_to_snakemake.py b/scripts/labkey_to_snakemake.py
index 41fbb3e1455a47fb7377805ef602314d0836c46a..6cce1e4c82708e8bd4de7168358075be70ffc95a 100755
--- a/scripts/labkey_to_snakemake.py
+++ b/scripts/labkey_to_snakemake.py
@@ -1,262 +1,195 @@
 #!/usr/bin/env python3
 
-# -----------------------------------------------------------------------------
-# Author : Katsantoni Maria, Christina Herrmann
-# Company: Mihaela Zavolan, Biozentrum, Basel
-# This script is part of the Zavolan lab quantification pipeline, which is used
-# for analysing RNA-seq data. The table is provided by labkey as a csv file.
-# If the user provides their own table the table should contain the following
-# columns:
-# -----------------------------------------------------------------------------
+"""Create input table and config for Rhea."""
 
-import sys
+import argparse
 import gzip
-import labkey
-from argparse import ArgumentParser, RawTextHelpFormatter
+import logging
+import math
 import os
 import sys
-import numpy as np
-import pandas as pd
-from Bio import SeqIO
-from io import StringIO
-from csv import writer
-from pathlib import Path
-# (avoids long lines in filter definitions)
-from labkey.query import QueryFilter
-
+from typing import Tuple
 
-def main():
-    """ Preprocess sample folder and create config file for snakemake"""
-
-    __doc__ = "Preprocess of labkey table and create " + \
-              "config file and sample table."
-
-    parser = ArgumentParser(description=__doc__,
-                            formatter_class=RawTextHelpFormatter)
-
-    parser.add_argument("genomes_path",
-                        help="Path containing the FASTA and GTF " +
-                        " files for all organisms",
-                        metavar="GENOMES PATH")
-
-    parser.add_argument("--input-table",
-                        type=str,
-                        default=None,
-                        help="Input table in LabKey format " +
-                        "containing the sample information;" +
-                        "\nexactly one '--input-table' and " +
-                        "'--remote' is required.",
-                        metavar="FILE")
-
-    parser.add_argument("--remote",
-                        action="store_true",
-                        help="Fetch LabKey table via API; exactly one of " +
-                        "'--input-table' and" +
-                        "\n'--remote' is required.")
-
-    parser.add_argument("--project-name",
-                        help="Name of LabKey project containing table " +
-                        " '--table-name'; required" +
-                        "\nif '--remote' is specified.",
-                        metavar="STR")
-
-    parser.add_argument("--table-name",
-                        help="Name of LabKey table; required if '--remote'" +
-                        " is specified.",
-                        metavar="STR")
-
-    parser.add_argument("--input-dict",
-                        help="Input dictionary containing the feature name " +
-                        "conversion from LabKey to Snakemake;" +
-                        "default: '%(default)s'",
-                        default=os.path.join(
-                            os.path.dirname(__file__),
-                            'labkey_to_snakemake.dict.tsv'),
-                        metavar="FILE")
-
-    parser.add_argument("--samples-table",
-                        help="Output table compatible to snakemake;" +
-                        "default: '%(default)s'",
-                        default='samples.tsv',
-                        metavar="FILE")
-
-    parser.add_argument("--trim_polya",
-                        type=int,
-                        choices=[True, False],
-                        default=True,
-                        help="Trim poly-As option")
-
-    parser.add_argument("--multimappers",
-                        type=int,
-                        default=100,
-                        help="Number of allowed multimappers",
-                        metavar='INT')
-
-    parser.add_argument("--soft-clip",
-                        choices=['EndToEnd', 'Local'],
-                        default='EndToEnd',
-                        help="Soft-clipping option for STAR")
-
-    parser.add_argument("--pass-mode",
-                        choices=['None', 'Basic'],
-                        default='None',
-                        help="2-pass mode option for STAR")
-
-    parser.add_argument("--libtype",
-                        default='A',
-                        help="Library type for salmon",
-                        metavar="STR")
-
-    parser.add_argument("--config-file",
-                        help="Configuration file to be used by Snakemake")
-
-    try:
-        options = parser.parse_args()
-    except(Exception):
-        parser.print_help()
-
-    if len(sys.argv) == 1:
-        parser.print_help()
-        sys.exit(1)
+from Bio import SeqIO
+import labkey
+import pandas as pd
 
-    if options.remote and options.input_table:
-        parser.print_help()
-        print(
-            "\n[ERROR] Options '--input-table' and ",
-            "'--remote' are mutually exclusive.")
-        sys.exit(1)
+logger = logging.getLogger(__name__)
 
-    if not options.remote and not options.input_table:
-        parser.print_help()
-        print("\n[ERROR] At least one of '--input-table' ",
-              "and '--remote' is required.")
-        sys.exit(1)
 
-    if options.remote and not options.project_name:
-        parser.print_help()
-        print(
-            "\n[ERROR] If option '--remote' is specified, ",
-            "option '--project-name' is required.")
-        sys.exit(1)
+def main():
+    """
+    Create input table and config for Rhea.
+    """
+    args = parse_cli_args()
+
+    setup_logging(
+        logger=logger,
+        verbose=args.verbose,
+        debug=args.debug,
+    )
 
-    if options.remote and not options.table_name:
-        parser.print_help()
-        print(
-            "\n[ERROR] If option '--remote' is specified, ",
-            "option '--table-name' is required.")
-        sys.exit(1)
-
-    sys.stdout.write('Reading input file...\n')
-
-    if options.remote is True:
-        input_table = api_fetch_labkey_table(
-            project_name=options.project_name,
-            query_name=options.table_name)
-        input_table.to_csv(options.input_table, sep='\t', index=False)
+    # get input table from LabKey or CLI
+    if args.labkey_domain:
+        logger.info(
+            f"Fetching input table from LabKey instance "
+            "'{args.labkey_domain}'..."
+        )
+        input_table = fetch_labkey_table(
+            domain=args.labkey_domain,
+            container_path=args.labkey_path,
+            query_name=args.table,
+        )
+        labkey_table = expand_path(
+            '.'.join([args.output_table.name, "labkey"])
+        )
+        input_table.to_csv(
+            labkey_table,
+            sep='\t',
+            index=False,
+        )
+        from_api = True
     else:
+        logger.info(f"Reading input table from file '{args.table}'...")
         input_table = pd.read_csv(
-            options.input_table,
+            args.table,
             header=0,
             sep='\t',
             index_col=None,
             comment='#',
-            engine='python')
+            engine='python',
+        )
+        from_api = False
 
+    # get LabKey to Snakemake sample table field mappings
     input_dict = pd.read_csv(
-        options.input_dict,
+        args.input_to_output_mapping,
         header=0,
         sep='\t',
         index_col=None,
         comment='#',
-        engine='python')
-
+        engine='python',
+    )
+    args.input_to_output_mapping.close()
     input_dict.set_index('snakemake', inplace=True, drop=True)
-    sys.stdout.write('Create snakemake table...\n')
+
+    # create Snakemake table
+    logger.info("Creating Snakemake input table...")
     snakemake_table = pd.DataFrame()
 
     for index, row in input_table.iterrows():
-        snakemake_table.loc[index, 'sample'] = row[
-            input_dict.loc['replicate_name', 'labkey']] + "_" + row[
-            input_dict.loc['condition', 'labkey']]
-        if row[input_dict.loc['seqmode', 'labkey']] == 'PAIRED':
-            snakemake_table.loc[index, 'seqmode'] = 'paired_end'
-        elif row[input_dict.loc['seqmode', 'labkey']] == 'SINGLE':
-            snakemake_table.loc[index, 'seqmode'] = 'single_end'
-
-        fq1 = os.path.join(
-            row[input_dict.loc['fastq_path', 'labkey']],
-            row[input_dict.loc['fq1', 'labkey']])
 
-        snakemake_table.loc[index, 'fq1'] = fq1
+        # extract data from LabKey-like table
+        lk_replicate_name = row[input_dict.loc['replicate_name', 'labkey']]
+        lk_condition = row[input_dict.loc['condition', 'labkey']]
+        lk_seqmode = row[input_dict.loc['seqmode', 'labkey']]
+        lk_fastq_path = row[input_dict.loc['fastq_path', 'labkey']]
+        lk_fq1 = row[input_dict.loc['fq1', 'labkey']]
+        lk_fq2 = row[input_dict.loc['fq2', 'labkey']]
+        lk_fq1_3p = row[input_dict.loc['fq1_3p', 'labkey']]
+        lk_fq1_5p = row[input_dict.loc['fq1_5p', 'labkey']]
+        lk_fq2_3p = row[input_dict.loc['fq2_3p', 'labkey']]
+        lk_fq2_5p = row[input_dict.loc['fq2_5p', 'labkey']]
+        lk_organism = row[input_dict.loc['organism', 'labkey']]
+        lk_sd = row[input_dict.loc['sd', 'labkey']]
+        lk_mean = row[input_dict.loc['mean', 'labkey']]
+        lk_mate1_direction = row[input_dict.loc['mate1_direction', 'labkey']]
+        lk_mate2_direction = row[input_dict.loc['mate2_direction', 'labkey']]
+
+        # extract, infer or convert to Snakemake input format
+        if from_api and not os.path.isabs(lk_fastq_path):
+            anchor = os.getcwd()
+            logger.warning(
+                f"[WARNING] Don't know how to interpret relative paths "
+                "inside LabKey table. Trying with current working directory "
+                f"'{anchor}' as an anchor, but it may be better to use"
+                "absolute paths wherever possible..."
+            )
+        else:
+            anchor = os.path.abspath(os.path.dirname(args.table))
+        sample = "_".join([lk_replicate_name, lk_condition])
+        if lk_seqmode == 'PAIRED':
+            seqmode = 'pe'
+            fq2 = expand_path(
+                lk_fastq_path,
+                lk_fq2,
+                anchor=anchor,
+            )
+        elif lk_seqmode == 'SINGLE':
+            seqmode = 'se'
+            fq2 = "XXXXXXXXXXXXXXX"
+        else:
+            logger.error(
+                f"[ERROR] Illegal sequencing mode '{lk_seqmode}' in row "
+                f"{index+1}."
+            )
+            sys.exit("Execution aborted.")
+        fq1 = expand_path(
+            lk_fastq_path,
+            lk_fq1,
+            anchor=anchor,
+        )
         read_length = get_read_length(fq1)
-        snakemake_table.loc[index, 'index_size'] = read_length
-        snakemake_table.loc[index, 'kmer'] = infer_kmer_length(read_length)
-        snakemake_table.loc[index, 'fq1_3p'] = row[
-            input_dict.loc['fq1_3p', 'labkey']]
-        snakemake_table.loc[index, 'fq1_5p'] = row[
-            input_dict.loc['fq1_5p', 'labkey']]
-
-        organism = row[input_dict.loc['organism', 'labkey']].replace(
-            ' ', '_').lower()
-        snakemake_table.loc[index, 'organism'] = organism
-
-        snakemake_table.loc[index, 'gtf'] = os.path.join(
-            options.genomes_path,
-            organism,
-            'annotation.gtf')
-
-        snakemake_table.loc[index, 'gtf_filtered'] = os.path.join(
-            options.genomes_path,
+        index_size = read_length - 1
+        kmer = kmer_from_read_length(read_length)
+        fq1_3p = lk_fq1_3p
+        fq1_5p = lk_fq1_5p
+        fq2_3p = lk_fq2_3p
+        fq2_5p = lk_fq2_5p
+        organism = lk_organism.replace(' ', '_').lower()
+        gtf = expand_path(
+            args.resources_dir,
             organism,
-            'annotation.gtf')
-
-        snakemake_table.loc[index, 'genome'] = os.path.join(
-            options.genomes_path,
+            'annotation.gtf',
+        )
+        genome = expand_path(
+            args.resources_dir,
             organism,
-            'genome.fa')
-
-        snakemake_table.loc[index, 'tr_fasta_filtered'] = os.path.join(
-            options.genomes_path,
-            organism,
-            'transcriptome.fa')
-
-        snakemake_table.loc[index, 'sd'] = row[
-            input_dict.loc['sd', 'labkey']]
-        snakemake_table.loc[index, 'mean'] = row[
-            input_dict.loc['mean', 'labkey']]
-        snakemake_table.loc[index, 'multimappers'] = options.multimappers
-        snakemake_table.loc[index, 'soft_clip'] = options.soft_clip
-        snakemake_table.loc[index, 'pass_mode'] = options.pass_mode
-        snakemake_table.loc[index, 'libtype'] = options.libtype
-
-        if options.trim_polya is True:
-            fq1_polya_3p, fq1_polya_5p = trim_polya(
-                row[input_dict.loc['mate1_direction', 'labkey']])
+            'genome.fa',
+        )
+        sd = lk_sd
+        mean = lk_mean
+        fq1_polya_3p, fq1_polya_5p = get_polya_adapter_seqs(lk_mate1_direction)
+        fq2_polya_3p, fq2_polya_5p = get_polya_adapter_seqs(lk_mate2_direction)
+        kallisto_directionality = get_strand_param_kallisto(lk_mate1_direction)
+        alfa_directionality = get_strand_param_alfa(lk_mate1_direction)
+        alfa_plus, alfa_minus = get_strand_names_alfa(lk_mate1_direction)
+
+        # construct row in Snakemake input table
+        snakemake_table.loc[index, 'sample'] = sample
+        snakemake_table.loc[index, 'seqmode'] = seqmode
+        snakemake_table.loc[index, 'fq1'] = fq1
+        snakemake_table.loc[index, 'fq2'] = fq2
+        snakemake_table.loc[index, 'index_size'] = index_size
+        snakemake_table.loc[index, 'kmer'] = kmer
+        snakemake_table.loc[index, 'fq1_3p'] = fq1_3p
+        snakemake_table.loc[index, 'fq1_5p'] = fq1_5p
+        snakemake_table.loc[index, 'fq2_3p'] = fq2_3p
+        snakemake_table.loc[index, 'fq2_5p'] = fq2_5p
+        snakemake_table.loc[index, 'organism'] = organism
+        snakemake_table.loc[index, 'gtf'] = gtf
+        snakemake_table.loc[index, 'genome'] = genome
+        snakemake_table.loc[index, 'sd'] = sd
+        snakemake_table.loc[index, 'mean'] = mean
+        snakemake_table.loc[index, 'kallisto_directionality'] = \
+            kallisto_directionality
+        snakemake_table.loc[index, 'alfa_directionality'] = alfa_directionality
+        snakemake_table.loc[index, 'alfa_plus'] = alfa_plus
+        snakemake_table.loc[index, 'alfa_minus'] = alfa_minus
+
+        # add CLI argument-dependent parameters
+        snakemake_table.loc[index, 'multimappers'] = args.multimappers
+        snakemake_table.loc[index, 'soft_clip'] = args.soft_clip
+        snakemake_table.loc[index, 'pass_mode'] = args.pass_mode
+        snakemake_table.loc[index, 'libtype'] = args.libtype
+        if args.trim_polya is True:
             snakemake_table.loc[index, 'fq1_polya_3p'] = fq1_polya_3p
             snakemake_table.loc[index, 'fq1_polya_5p'] = fq1_polya_5p
+            snakemake_table.loc[index, 'fq2_polya_3p'] = fq2_polya_3p
+            snakemake_table.loc[index, 'fq2_polya_5p'] = fq2_polya_5p
 
-        snakemake_table.loc[index, 'kallisto_directionality'] = \
-            get_kallisto_directionality(
-                row[input_dict.loc['mate1_direction', 'labkey']])
-
-        if row[input_dict.loc['seqmode', 'labkey']] == 'PAIRED':
-            fq2 = os.path.join(
-                row[input_dict.loc['fastq_path', 'labkey']],
-                row[input_dict.loc['fq2', 'labkey']])
-            snakemake_table.loc[index, 'fq2'] = fq2
-
-            snakemake_table.loc[index, 'fq2_3p'] = row[
-                input_dict.loc['fq2_3p', 'labkey']]
-            snakemake_table.loc[index, 'fq2_5p'] = row[
-                input_dict.loc['fq2_5p', 'labkey']]
-
-            if options.trim_polya is True:
-                fq2_polya_3p, fq2_polya_5p = trim_polya(
-                    row[input_dict.loc['mate2_direction', 'labkey']])
-                snakemake_table.loc[index, 'fq2_polya_3p'] = fq2_polya_3p
-                snakemake_table.loc[index, 'fq2_polya_5p'] = fq2_polya_5p
-
-    snakemake_table.fillna('XXXXXXXXXXXXX', inplace=True)
+    # adjust sample table format
+    snakemake_table.fillna('XXXXXXXXXXXXXXX', inplace=True)
     snakemake_table = snakemake_table.astype(
         {
             "sd": int,
@@ -266,82 +199,486 @@ def main():
             "index_size": int,
         }
     )
+
+    # write Snakemake sample table
+    logger.info("Writing Snakemake input table...")
     snakemake_table.to_csv(
-        options.samples_table,
+        args.output_table,
         sep='\t',
         header=True,
         index=False)
+    args.output_table.close()
 
-    # Read file and infer read size for sjdbovwerhang
-    with open(options.config_file, 'w') as config_file:
-        config_file.write('''---
-  samples: "''' + options.samples_table + '''"
-  output_dir: "results/"
-  log_dir: "logs/"
-  kallisto_indexes: "results/kallisto_indexes/"
-  salmon_indexes: "results/salmon_indexes/"
-  star_indexes: "results/star_indexes/"
-  alfa_indexes: "results/alfa_indexes/"
-...''')
-
-    sys.stdout.write('Create snakemake table finished successfully...\n')
-    sys.stdout.write('Create config file...\n')
-    sys.stdout.write('Create config file finished successfully...\n')
-    return
-
-
-def api_fetch_labkey_table(project_name=None, query_name=None):
-    group_path = os.path.join('/Zavolan Group', project_name)
+    # compile entries for Snakemake config file
+    logger.info("Creating Snakemake config file...")
+    results_dir = expand_path(
+        args.output_dir,
+        "results",
+    )
+    log_dir = expand_path(
+        args.output_dir,
+        "logs",
+    )
+    kallisto_indexes = expand_path(
+        results_dir,
+        "kallisto_indexes",
+    )
+    salmon_indexes = expand_path(
+        results_dir,
+        "salmon_indexes",
+    )
+    star_indexes = expand_path(
+        results_dir,
+        "star_indexes",
+    )
+    alfa_indexes = expand_path(
+        results_dir,
+        "alfa_indexes",
+    )
+
+    # write Snakemake config file
+    logger.info("Writing Snakemake config file...")
+    config_file_content = f'''---
+  samples: "{expand_path(args.output_table.name)}"
+  output_dir: "{results_dir}"
+  log_dir: "{log_dir}"
+  kallisto_indexes: "{kallisto_indexes}"
+  salmon_indexes: "{salmon_indexes}"
+  star_indexes: "{star_indexes}"
+  alfa_indexes: "{alfa_indexes}"
+  report_description: "{args.description}"
+  report_logo: "{args.logo}"
+  report_url: "{args.url}"
+...
+'''
+    args.config_file.write(config_file_content)
+    args.config_file.close()
+
+
+def parse_cli_args() -> argparse.Namespace:
+    """
+    Parses command line arguments.
+
+    :returns: parsed CLI arguments
+    """
+    parser = argparse.ArgumentParser(
+        description=__doc__,
+    )
+
+    parser.add_argument(
+        "table",
+        type=str,
+        default=None,
+        help="either local file path of input table *or* name of table on "
+             "LabKey instance (see 'LabKey API' options below)",
+        metavar="TABLE",
+    )
+
+    api = parser.add_argument_group("LabKey API")
+    api.add_argument(
+        "--labkey-domain",
+        type=str,
+        default=None,
+        help="domain of LabKey instance to query; required for obtaining "
+             "input table via LabKey API",
+        metavar="STR",
+    )
+    api.add_argument(
+        "--labkey-path",
+        type=str,
+        default=None,
+        help="path to LabKey container that includes specified input table; "
+             "required for obtaining input table via LabKey API",
+        metavar="STR",
+    )
+
+    io = parser.add_argument_group("input/output")
+    io.add_argument(
+        "--input-to-output-mapping",
+        type=argparse.FileType('r'),
+        default=os.path.join(
+            os.path.dirname(__file__),
+            'labkey_to_snakemake.dict.tsv',
+        ),
+        help="lookup table with mappings from input (LabKey or LabKey-like) "
+             "to output (Snakemake) table; default: '%(default)s'",
+        metavar="FILE",
+    )
+    io.add_argument(
+        "--resources-dir",
+        type=str,
+        default=os.getcwd(),
+        help="path containing the genome resources for all organisms "
+             "(default: %(default)s)",
+        metavar="DIR",
+    )
+    io.add_argument(
+        "--output-table",
+        type=argparse.FileType('w'),
+        default="samples.tsv",
+        help="output sample table for use in Rhea (default: %(default)s)",
+        metavar="FILE",
+    )
+    io.add_argument(
+        "--config-file",
+        type=argparse.FileType('w'),
+        default="config.yaml",
+        help="output Snakemake configuration file for use in Rhea (default: "
+             "%(default)s)",
+        metavar="FILE",
+    )
+    io.add_argument(
+        "--output-dir",
+        type=str,
+        default=os.getcwd(),
+        help="directory to which Rhea results and logs are to be written "
+             "(default: %(default)s)",
+        metavar="DIR",
+    )
+
+    behavior = parser.add_argument_group("workflow behavior")
+    behavior.add_argument(
+        "--trim-polya",
+        type=int,
+        choices=[True, False],
+        default=True,
+        help="cutadapt: trim poly(A) tails option (default: %(default)s)",
+    )
+    behavior.add_argument(
+        "--multimappers",
+        type=int,
+        default=100,
+        help="STAR: number of multimappers to report (default: %(default)s)",
+        metavar='INT',
+    )
+    behavior.add_argument(
+        "--soft-clip",
+        type=str,
+        default="EndToEnd",
+        help="STAR: soft-clipping option (default: %(default)s)",
+        choices=['EndToEnd', 'Local'],
+    )
+    behavior.add_argument(
+        "--pass-mode",
+        type=str,
+        default="None",
+        help="STAR: 2-pass mode option (default: %(default)s)",
+        choices=["None", "Basic"],
+    )
+    behavior.add_argument(
+        "--libtype",
+        type=str,
+        default="A",
+        help="Salmon: library type (default: %(default)s)",
+        metavar="STR",
+    )
+
+    report = parser.add_argument_group("report")
+    report.add_argument(
+        "--description",
+        type=str,
+        default="N/A",
+        help="short description to be added to the report (default: "
+             "%(default)s)",
+        metavar="STR",
+    )
+    report.add_argument(
+        "--logo",
+        type=argparse.FileType('r'),
+        default=None,
+        help="path to image file to be added to the report (default: "
+             "%(default)s)",
+        metavar="FILE",
+    )
+    report.add_argument(
+        "--url",
+        type=str,
+        default="N/A",
+        help="contact URL to be added to the report (default: %(default)s)",
+        metavar="STR",
+    )
+
+    parser.add_argument(
+        "-v", "--verbose",
+        action="store_true",
+        default=False,
+        help="print log messages to STDERR",
+    )
+    parser.add_argument(
+        "--debug",
+        action="store_true",
+        default=False,
+        help="print log and debug messages to STDERR",
+    )
+
+    args = parser.parse_args()
+
+    if args.logo:
+        args.logo.close()
+        args.logo = os.path.abspath(args.logo.name)
+    else:
+        args.logo = ""
+
+    if (args.labkey_domain and not args.labkey_path) or \
+       (args.labkey_path and not args.labkey_domain):
+        parser.print_help()
+        sys.exit(
+            "\n[ERROR] Either none or both of '--labkey-domain' and "
+            "'--labkey-path' are required."
+        )
+    return args
+
+
+def setup_logging(
+    logger: logging.Logger,
+    verbose: bool = False,
+    debug: bool = False,
+) -> None:
+    """
+    Configure logger.
+
+    :param logger: the `logging.Logger` object to configure
+    :param verbose: whether `logging.INFO` messages shall be logged
+    :param debug: whether `logging.DEBUG` messages shall be logged
+
+    :returns: None
+    :raises ?: TODO
+    """
+    if debug:
+        logger.setLevel(logging.DEBUG)
+    elif verbose:
+        logger.setLevel(logging.INFO)
+    else:
+        logger.setLevel(logging.WARNING)
+    handler = logging.StreamHandler()
+    handler.setFormatter(logging.Formatter(
+        "[%(asctime)-15s: %(levelname)-8s @ %(funcName)s] %(message)s"
+    ))
+    logger.addHandler(handler)
+
+
+def fetch_labkey_table(
+    domain: str,
+    container_path: str,
+    query_name: str,
+    context_path: str = "labkey",
+    schema_name: str = "lists",
+) -> pd.DataFrame:
+    """
+    Export LabKey table as Pandas data frame.
+
+    :param domain: domain of LabKey instance
+    :param container_path: path to LabKey container that includes the table of
+        interest
+    :param query_name: name of LabKey table to export
+    :context_path: required by API; usage unclear TODO
+    :schema_name: required by API; usage unclear TODO
+
+    :returns: Pandas data frame
+    :raises ?: TODO
+    """
     server_context = labkey.utils.create_server_context(
-        'labkey.scicore.unibas.ch', group_path, 'labkey', use_ssl=True)
-    schema_name = "lists"
-    results = labkey.query.select_rows(server_context, schema_name, query_name)
+        domain=domain,
+        container_path=container_path,
+        context_path=context_path,
+        use_ssl=True,
+    )
+    results = labkey.query.select_rows(
+        server_context=server_context,
+        schema_name=schema_name,
+        query_name=query_name,
+    )
     input_table = pd.DataFrame(results["rows"])
     return input_table
 
 
-def get_read_length(filename):
-    with gzip.open(filename, "rt") as handle:
-        for record in SeqIO.parse(handle, "fastq"):
-            read_length = len(record.seq)
-            break
-    return read_length
+def get_read_length(file: str) -> int:
+    """
+    Returns read length of first entry of gzipped FASTQ file.
+
+    :param file: path to gzipped FASTQ file
+
+    :returns: read length
+    :raises FileNotFoundError: file does not exist
+    :raises IsADirectoryError: file is a directory
+    :raises OSError: file is not gzipped
+    :raises PermissionError: file cannot be read
+    :raises ValueError: not a valid FASTQ file
+    """
+    with gzip.open(file, "rt") as handle:
+        return len(next(SeqIO.parse(handle, "fastq")))
+
+
+def kmer_from_read_length(
+    l: int,
+    k_max: int = 31,
+    k_min: int = 11,
+) -> int:
+    """
+    Given a read length, returns appropriate kmer parameter size for Salmon
+    (https://salmon.readthedocs.io/) or similar k-mer-based quantification
+    tools.
+
+    References for implementation:
+    https://salmon.readthedocs.io/en/latest/salmon.html#preparing-transcriptome-indices-mapping-based-mode
+    https://groups.google.com/d/msg/sailfish-users/fphjX7OIGzY/bMBwlCaZAgAJ
+
+    :param l: length of read in nucleotides
+    :param k_max: maximum allowed k-mer size
+    :param k_min: minimum allowed k-mer size
+
+    :returns: k_max for l > 2 * k_max, or else the maximum of k and k_min,
+        where k is biggest odd integer that fulfills k < l / 2
+    """
+    k = k_max
+    if l < 2 * k_max + 1:
+        # ensure kmer is smaller than half of read length
+        k = math.floor((l - 1) / 2)
+        # ensure kmer is odd
+        if not k % 2:
+            k -= 1
+    if k < k_min:
+        k = k_min
+    return k
+
+
+def get_strand_param_kallisto(directionality: str) -> str:
+    """
+    Returns appropriate strand info parameter for kallisto
+    (https://pachterlab.github.io/kallisto/), given a string indicating the
+    "directionality" of a sequencing library.
+
+    :param directionality: direction in which library was sequenced (one of
+        "SENSE" and "ANTISENSE")
+
+    :returns: appropriate kallisto option for specified directionality; an
+        empty string is returned if the directionality value is empty or not
+        recognized
+    """
+    if directionality == "SENSE":
+        option = "--fr"
+    elif directionality == "ANTISENSE":
+        option = "--rf"
+    else:
+        option = ""
+    return option
 
 
-def infer_kmer_length(read_length):
-    if read_length <= 50:
-            kmer = 21
-    elif read_length > 50:
-        kmer = 31
-    return kmer
+def get_strand_param_alfa(directionality: str) -> str:
+    """
+    Returns appropriate strand info parameter for ALFA
+    (https://github.com/biocompibens/ALFA), given a string indicating the
+    "directionality" of a sequencing library.
 
+    :param directionality: direction in which library was sequenced (one of
+        "SENSE" and "ANTISENSE")
 
-def get_kallisto_directionality(directionality):
+    :returns: appropriate ALFA option for specified directionality; an empty
+        string is returned if the directionality value is empty or not
+        recognized
+    """
     if directionality == 'SENSE':
-        final_direction = '--fr'
+        option = 'fr-firststrand'
     elif directionality == 'ANTISENSE':
-        final_direction = '--rf'
+        option = 'fr-secondstrand'
     else:
-        final_direction = ''
-    return final_direction
+        option = ''
+    return option
+
+
+def get_strand_names_alfa(directionality: str) -> Tuple[str, str]:
+    """
+    Returns appropriate strand name suffixes for ALFA
+    (https://github.com/biocompibens/ALFA), given a string indicating the
+    "directionality" of a sequencing library.
+
+    :param directionality: direction in which library was sequenced (one of
+        "SENSE" and "ANTISENSE")
+
+    :returns: tuple of ALFA strand name suffixes for two coverage tracks of a
+        paired-end sequencing library
+    """
+    if directionality == "SENSE":
+        plus = "str1"
+        minus = "str2"
+    elif directionality == "ANTISENSE":
+        minus = "str1"
+        plus = "str2"
+    else:
+        plus = ""
+        minus = ""
+    return (plus, minus)
+
+
+def get_polya_adapter_seqs(directionality: str) -> Tuple[str, str]:
+    """
+    Returns repeat oligomers for detecting and trimming of poly(A) signals from
+    a sequencing library, given a string indicating the library's
+    "directionality".
 
+    :param directionality: direction in which library was sequenced (one of
+        "SENSE" and "ANTISENSE")
 
-def trim_polya(sense):
-    if sense == 'SENSE':
-        polya_3p = 'AAAAAAAAAAAAAAAAA'
-        polya_5p = 'XXXXXXXXXXXXXXXXX'
-    elif sense == 'ANTISENSE':
-        polya_3p = 'XXXXXXXXXXXXXXXXX'
-        polya_5p = 'TTTTTTTTTTTTTTTTT'
+    :returns: tuple of two 15-mers to be used to detect and trim poly(A)
+        signals from the 3' and 5' ends of the reads of sequencing library,
+        respectively
+    """
+    if directionality == 'SENSE':
+        three = 'AAAAAAAAAAAAAAA'
+        five = 'XXXXXXXXXXXXXXX'
+    elif directionality == 'ANTISENSE':
+        three = 'XXXXXXXXXXXXXXX'
+        five = 'TTTTTTTTTTTTTTT'
     else:
-        polya_3p = 'XXXXXXXXXXXXXXXXX'
-        polya_5p = 'XXXXXXXXXXXXXXXXX'
-    return polya_3p, polya_5p
+        three = 'XXXXXXXXXXXXXXX'
+        five = 'XXXXXXXXXXXXXXX'
+    return (three, five)
+
+
+def expand_path(
+    *args: str,
+    anchor: str = os.getcwd(),
+    expand: bool = True,
+) -> str:
+    """
+    Constructs absolute path.
+
+    Not tested with symbolic links.
+
+    :param args: path fragments which will be joined to the anchor from left
+        to right
+    :param anchor: path relative to which the path fragments in *args shall
+        be interpreted; can be absolute or relative; in the latter case, it is
+        interpreted relative to the current working directory; if path
+        fragments evaluate to absolute path (either before or after expansion),
+        the path will be returned without considering the anchor
+    :param expand: whether environment variables and user directories (e.g,
+        `~`) shall be expanded
+
+    :returns: absolute path
+    """
+    suffix = os.path.join(*args)
+    if os.path.isabs(suffix):
+        return os.path.normpath(suffix)
+    if expand:
+        suffix = os.path.expanduser(
+            os.path.expandvars(
+                suffix
+            )
+        )
+    if os.path.isabs(suffix):
+        return os.path.normpath(suffix)
+    if expand:
+        anchor = os.path.expanduser(
+            os.path.expandvars(
+                anchor
+            )
+        )
+    path = os.path.join(anchor, suffix)
+    return os.path.normpath(path)
 
 
 if __name__ == '__main__':
-    try:
-        main()
-    except KeyboardInterrupt:
-        sys.stderr.write("User interrupt!" + os.linesep)
-        sys.exit(0)
+    main()
+    logger.info("Program completed successfully.")
+    sys.exit(0)
diff --git a/tests/input_files/config.yaml b/tests/input_files/config.yaml
index 0d879677d10cf46a0185779cb6a1d16a841c82bc..a7e59f631cfd82aee786c1205252bf4fd8e910ef 100644
--- a/tests/input_files/config.yaml
+++ b/tests/input_files/config.yaml
@@ -1,9 +1,12 @@
 ---
   samples: "../input_files/samples.tsv"
-  output_dir: "results/"
-  log_dir: "logs/"
-  kallisto_indexes: "results/kallisto_indexes/"
-  salmon_indexes: "results/salmon_indexes/"
-  star_indexes: "results/star_indexes/"
-  alfa_indexes: "results/alfa_indexes/"
-...
+  output_dir: "results"
+  log_dir: "logs"
+  kallisto_indexes: "results/kallisto_indexes"
+  salmon_indexes: "results/salmon_indexes"
+  star_indexes: "results/star_indexes"
+  alfa_indexes: "results/alfa_indexes"
+  report_description: "No description provided by user"
+  report_logo: "../../images/logo.128px.png"
+  report_url: "https://zavolan.biozentrum.unibas.ch/"
+...
\ No newline at end of file
diff --git a/tests/input_files/config_alfa.yaml b/tests/input_files/config_alfa.yaml
index 33f97d5c6a5769a728b294479651d7cf1be67925..cdcfb8b873382cbf3c76040c9f88763888a0d0c5 100644
--- a/tests/input_files/config_alfa.yaml
+++ b/tests/input_files/config_alfa.yaml
@@ -6,4 +6,7 @@
   salmon_indexes: "results/salmon_indexes/"
   star_indexes: "results/star_indexes/"
   alfa_indexes: "results/alfa_indexes/"
+  report_description: "No description provided by user"
+  report_logo: "../../images/logo.128px.png"
+  report_url: "https://zavolan.biozentrum.unibas.ch/"
 ...
diff --git a/tests/input_files/samples.tsv b/tests/input_files/samples.tsv
index d7ff5bba2366cb611105b667a45815b0d9dd3902..4b2630287454e8a7d4dbc7652f1897410a905ef5 100644
--- a/tests/input_files/samples.tsv
+++ b/tests/input_files/samples.tsv
@@ -1,3 +1,3 @@
-sample	seqmode	fq1	index_size	kmer	fq1_3p	fq1_5p	organism	gtf	gtf_filtered	genome	tr_fasta_filtered	sd	mean	multimappers	soft_clip	pass_mode	libtype	fq1_polya_3p	fq1_polya_5p	kallisto_directionality	fq2	fq2_3p	fq2_5p	fq2_polya_3p	fq2_polya_5p
-synthetic_10_reads_paired_synthetic_10_reads_paired	paired_end	../input_files/project1/synthetic.mate_1.fastq.gz	75	31	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/genome.fa	../input_files/homo_sapiens/transcriptome.fa	100	250	10	EndToEnd	None	A	AAAAAAAAAAAAAAAAA	XXXXXXXXXXXXXXXXX	--fr	../input_files/project1/synthetic.mate_2.fastq.gz	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	XXXXXXXXXXXXXXXXX	TTTTTTTTTTTTTTTTT
-synthetic_10_reads_mate_1_synthetic_10_reads_mate_1	single_end	../input_files/project2/synthetic.mate_1.fastq.gz	75	31	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/genome.fa	../input_files/homo_sapiens/transcriptome.fa	100	250	10	EndToEnd	None	A	AAAAAAAAAAAAAAAAA	XXXXXXXXXXXXXXXXX	--fr	XXXXXXXXXXXXX	XXXXXXXXXXXXX	XXXXXXXXXXXXX	XXXXXXXXXXXXX	XXXXXXXXXXXXX
+sample	seqmode	fq1	index_size	kmer	fq1_3p	fq1_5p	organism	gtf	genome	sd	mean	multimappers	soft_clip	pass_mode	libtype	fq1_polya_3p	fq1_polya_5p	kallisto_directionality	alfa_directionality	alfa_plus	alfa_minus	fq2	fq2_3p	fq2_5p	fq2_polya_3p	fq2_polya_5p
+synthetic_10_reads_paired_synthetic_10_reads_paired	pe	../input_files/project1/synthetic.mate_1.fastq.gz	75	31	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/genome.fa	100	250	10	EndToEnd	None	A	AAAAAAAAAAAAAAAAA	XXXXXXXXXXXXXXXXX	--fr	fr-firststrand	str1	str2	../input_files/project1/synthetic.mate_2.fastq.gz	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	XXXXXXXXXXXXXXXXX	TTTTTTTTTTTTTTTTT
+synthetic_10_reads_mate_1_synthetic_10_reads_mate_1	se	../input_files/project2/synthetic.mate_1.fastq.gz	75	31	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/genome.fa	100	250	10	EndToEnd	None	A	AAAAAAAAAAAAAAAAA	XXXXXXXXXXXXXXXXX	--fr	fr-firststrand	str1	str2	XXXXXXXXXXXXX	XXXXXXXXXXXXX	XXXXXXXXXXXXX	XXXXXXXXXXXXX	XXXXXXXXXXXXX
diff --git a/tests/input_files/samples_alfa.tsv b/tests/input_files/samples_alfa.tsv
index df032482a4a8a10e75dfeca0ef4cbc5bbe188b28..af1835c28f16f31fe571797e3ae07355d1710e50 100644
--- a/tests/input_files/samples_alfa.tsv
+++ b/tests/input_files/samples_alfa.tsv
@@ -1,5 +1,5 @@
-sample	seqmode	fq1	index_size	kmer	fq2	fq1_3p	fq1_5p	fq2_3p	fq2_5p	organism	gtf	gtf_filtered	genome	tr_fasta_filtered	sd	mean	multimappers	soft_clip	pass_mode	libtype	kallisto_directionality	fq1_polya	fq2_polya
-paired_end_R1_on_plus_sense	paired_end	XXXXXXXXXXXXX	75	31	XXXXXXXXXXXXX	GATCGGAAGAGCACA	XXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/quick_start.gtf	../input_files/homo_sapiens/quick_start.gtf	XXXXXXXXXXXXX	XXXXXXXXXXXXX	100	250	10	EndToEnd	None	A	--fr	AAAAAAAAAAAAAAAAA	TTTTTTTTTTTTTTTTT
-paired_end_R1_on_plus_antisense	paired_end	XXXXXXXXXXXXX	75	31	XXXXXXXXXXXXX	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/quick_start.gtf	../input_files/homo_sapiens/quick_start.gtf	XXXXXXXXXXXXX	XXXXXXXXXXXXX	100	250	10	EndToEnd	None	A	--rf	AAAAAAAAAAAAAAAAA	TTTTTTTTTTTTTTTTT
-paired_end_R1_on_minus_sense	paired_end	XXXXXXXXXXXXX	75	31	XXXXXXXXXXXXX	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/quick_start.gtf	../input_files/homo_sapiens/quick_start.gtf	XXXXXXXXXXXXX	XXXXXXXXXXXXX	100	250	10	EndToEnd	None	A	--fr	AAAAAAAAAAAAAAAAA	TTTTTTTTTTTTTTTTT
-paired_end_R1_on_minus_antisense	paired_end	XXXXXXXXXXXXX	75	31	XXXXXXXXXXXXX	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/quick_start.gtf	../input_files/homo_sapiens/quick_start.gtf	XXXXXXXXXXXXX	XXXXXXXXXXXXX	100	250	10	EndToEnd	None	A	--rf	AAAAAAAAAAAAAAAAA	TTTTTTTTTTTTTTTTT
+sample	seqmode	fq1	index_size	kmer	fq2	fq1_3p	fq1_5p	fq2_3p	fq2_5p	organism	gtf	genome	sd	mean	multimappers	soft_clip	pass_mode	libtype	kallisto_directionality	fq1_polya	fq2_polya	alfa_directionality	alfa_plus	alfa_minus
+paired_end_R1_on_plus_sense	pe	XXXXXXXXXXXXX	75	31	XXXXXXXXXXXXX	GATCGGAAGAGCACA	XXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/quick_start.gtf	XXXXXXXXXXXXX	100	250	10	EndToEnd	None	A	--fr	AAAAAAAAAAAAAAAAA	TTTTTTTTTTTTTTTTT	fr-firststrand	str1	str2
+paired_end_R1_on_plus_antisense	pe	XXXXXXXXXXXXX	75	31	XXXXXXXXXXXXX	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/quick_start.gtf	XXXXXXXXXXXXX	100	250	10	EndToEnd	None	A	--rf	AAAAAAAAAAAAAAAAA	TTTTTTTTTTTTTTTTT	fr-secondstrand	str2	str1
+paired_end_R1_on_minus_sense	pe	XXXXXXXXXXXXX	75	31	XXXXXXXXXXXXX	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/quick_start.gtf	XXXXXXXXXXXXX	100	250	10	EndToEnd	None	A	--fr	AAAAAAAAAAAAAAAAA	TTTTTTTTTTTTTTTTT	fr-firststrand	str1	str2
+paired_end_R1_on_minus_antisense	pe	XXXXXXXXXXXXX	75	31	XXXXXXXXXXXXX	AGATCGGAAGAGCACA	XXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/quick_start.gtf	XXXXXXXXXXXXX	100	250	10	EndToEnd	None	A	--rf	AAAAAAAAAAAAAAAAA	TTTTTTTTTTTTTTTTT	fr-secondstrand	str2	str1
diff --git a/tests/test_alfa/expected_output.md5 b/tests/test_alfa/expected_output.md5
index 7b2472fd3ccb922882625f7e4a73442aaa9ef1b4..797b178f606ed2f7307b8438017849e065b58dc1 100644
--- a/tests/test_alfa/expected_output.md5
+++ b/tests/test_alfa/expected_output.md5
@@ -1,42 +1,42 @@
 90e42aa46890e9cd0a47800428699fbf  results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.stranded.ALFA_index
 ccc3cf5a57fddb0d469e597d4376b1bf  results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.unstranded.ALFA_index
-e5959524a2daf35da9249fb313920315  results/paired_end/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense.ALFA_feature_counts.tsv
-c406c1800d3690dd774aaa7e3c190523  results/paired_end/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense.ALFA_feature_counts.tsv
-c406c1800d3690dd774aaa7e3c190523  results/paired_end/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense.ALFA_feature_counts.tsv
-e5959524a2daf35da9249fb313920315  results/paired_end/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense.ALFA_feature_counts.tsv
-e5959524a2daf35da9249fb313920315  results/paired_end/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense.ALFA_feature_counts.tsv
-c406c1800d3690dd774aaa7e3c190523  results/paired_end/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense.ALFA_feature_counts.tsv
-c406c1800d3690dd774aaa7e3c190523  results/paired_end/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense.ALFA_feature_counts.tsv
-e5959524a2daf35da9249fb313920315  results/paired_end/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense.ALFA_feature_counts.tsv
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.out.minus.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.out.plus.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.out.minus.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.out.plus.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.out.minus.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.out.plus.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.out.minus.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.out.plus.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense_Signal.Unique.out.minus.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense_Signal.Unique.out.plus.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense_Signal.Unique.out.minus.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense_Signal.Unique.out.plus.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense_Signal.Unique.out.minus.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense_Signal.Unique.out.plus.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense_Signal.Unique.out.minus.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense_Signal.Unique.out.plus.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.str1.out.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.str2.out.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.Unique.str1.out.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.Unique.str2.out.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.str1.out.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.str2.out.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.Unique.str1.out.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.Unique.str2.out.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.str1.out.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.str2.out.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.Unique.str1.out.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.Unique.str2.out.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.str1.out.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.str2.out.bg
-8e23d52d7f635d927e292174f33168eb  results/paired_end/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.Unique.str1.out.bg
-5e90c760710980f4f4866dbe9aa32c6c  results/paired_end/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.Unique.str2.out.bg
+e5959524a2daf35da9249fb313920315  results/samples/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense.ALFA_feature_counts.tsv
+c406c1800d3690dd774aaa7e3c190523  results/samples/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense.ALFA_feature_counts.tsv
+c406c1800d3690dd774aaa7e3c190523  results/samples/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense.ALFA_feature_counts.tsv
+e5959524a2daf35da9249fb313920315  results/samples/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense.ALFA_feature_counts.tsv
+e5959524a2daf35da9249fb313920315  results/samples/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense.ALFA_feature_counts.tsv
+c406c1800d3690dd774aaa7e3c190523  results/samples/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense.ALFA_feature_counts.tsv
+c406c1800d3690dd774aaa7e3c190523  results/samples/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense.ALFA_feature_counts.tsv
+e5959524a2daf35da9249fb313920315  results/samples/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense.ALFA_feature_counts.tsv
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense.UniqueMultiple.minus.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_minus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_minus_antisense.UniqueMultiple.plus.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense.UniqueMultiple.minus.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_minus_sense/ALFA/UniqueMultiple/paired_end_R1_on_minus_sense.UniqueMultiple.plus.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense.UniqueMultiple.minus.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_plus_antisense/ALFA/UniqueMultiple/paired_end_R1_on_plus_antisense.UniqueMultiple.plus.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense.UniqueMultiple.minus.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_plus_sense/ALFA/UniqueMultiple/paired_end_R1_on_plus_sense.UniqueMultiple.plus.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense.Unique.minus.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_minus_antisense/ALFA/Unique/paired_end_R1_on_minus_antisense.Unique.plus.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense.Unique.minus.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_minus_sense/ALFA/Unique/paired_end_R1_on_minus_sense.Unique.plus.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense.Unique.minus.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_plus_antisense/ALFA/Unique/paired_end_R1_on_plus_antisense.Unique.plus.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense.Unique.minus.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_plus_sense/ALFA/Unique/paired_end_R1_on_plus_sense.Unique.plus.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.str1.out.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.UniqueMultiple.str2.out.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.Unique.str1.out.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_minus_antisense/STAR_coverage/paired_end_R1_on_minus_antisense_Signal.Unique.str2.out.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.str1.out.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.UniqueMultiple.str2.out.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.Unique.str1.out.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_minus_sense/STAR_coverage/paired_end_R1_on_minus_sense_Signal.Unique.str2.out.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.str1.out.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.UniqueMultiple.str2.out.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.Unique.str1.out.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_plus_antisense/STAR_coverage/paired_end_R1_on_plus_antisense_Signal.Unique.str2.out.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.str1.out.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.UniqueMultiple.str2.out.bg
+8e23d52d7f635d927e292174f33168eb  results/samples/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.Unique.str1.out.bg
+5e90c760710980f4f4866dbe9aa32c6c  results/samples/paired_end_R1_on_plus_sense/STAR_coverage/paired_end_R1_on_plus_sense_Signal.Unique.str2.out.bg
diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense_Aligned.sortedByCoord.out.bam b/tests/test_alfa/results/samples/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense.pe.Aligned.sortedByCoord.out.bam
similarity index 100%
rename from tests/test_alfa/results/paired_end/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense_Aligned.sortedByCoord.out.bam
rename to tests/test_alfa/results/samples/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense.pe.Aligned.sortedByCoord.out.bam
diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense_Aligned.sortedByCoord.out.bam.bai b/tests/test_alfa/results/samples/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense.pe.Aligned.sortedByCoord.out.bam.bai
similarity index 100%
rename from tests/test_alfa/results/paired_end/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense_Aligned.sortedByCoord.out.bam.bai
rename to tests/test_alfa/results/samples/paired_end_R1_on_minus_antisense/map_genome/paired_end_R1_on_minus_antisense.pe.Aligned.sortedByCoord.out.bam.bai
diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense_Aligned.sortedByCoord.out.bam b/tests/test_alfa/results/samples/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense.pe.Aligned.sortedByCoord.out.bam
similarity index 100%
rename from tests/test_alfa/results/paired_end/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense_Aligned.sortedByCoord.out.bam
rename to tests/test_alfa/results/samples/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense.pe.Aligned.sortedByCoord.out.bam
diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense_Aligned.sortedByCoord.out.bam.bai b/tests/test_alfa/results/samples/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense.pe.Aligned.sortedByCoord.out.bam.bai
similarity index 100%
rename from tests/test_alfa/results/paired_end/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense_Aligned.sortedByCoord.out.bam.bai
rename to tests/test_alfa/results/samples/paired_end_R1_on_minus_sense/map_genome/paired_end_R1_on_minus_sense.pe.Aligned.sortedByCoord.out.bam.bai
diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense_Aligned.sortedByCoord.out.bam b/tests/test_alfa/results/samples/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense.pe.Aligned.sortedByCoord.out.bam
similarity index 100%
rename from tests/test_alfa/results/paired_end/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense_Aligned.sortedByCoord.out.bam
rename to tests/test_alfa/results/samples/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense.pe.Aligned.sortedByCoord.out.bam
diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense_Aligned.sortedByCoord.out.bam.bai b/tests/test_alfa/results/samples/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense.pe.Aligned.sortedByCoord.out.bam.bai
similarity index 100%
rename from tests/test_alfa/results/paired_end/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense_Aligned.sortedByCoord.out.bam.bai
rename to tests/test_alfa/results/samples/paired_end_R1_on_plus_antisense/map_genome/paired_end_R1_on_plus_antisense.pe.Aligned.sortedByCoord.out.bam.bai
diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense_Aligned.sortedByCoord.out.bam b/tests/test_alfa/results/samples/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense.pe.Aligned.sortedByCoord.out.bam
similarity index 100%
rename from tests/test_alfa/results/paired_end/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense_Aligned.sortedByCoord.out.bam
rename to tests/test_alfa/results/samples/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense.pe.Aligned.sortedByCoord.out.bam
diff --git a/tests/test_alfa/results/paired_end/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense_Aligned.sortedByCoord.out.bam.bai b/tests/test_alfa/results/samples/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense.pe.Aligned.sortedByCoord.out.bam.bai
similarity index 100%
rename from tests/test_alfa/results/paired_end/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense_Aligned.sortedByCoord.out.bam.bai
rename to tests/test_alfa/results/samples/paired_end_R1_on_plus_sense/map_genome/paired_end_R1_on_plus_sense.pe.Aligned.sortedByCoord.out.bam.bai
diff --git a/tests/test_alfa/test.sh b/tests/test_alfa/test.sh
index 523eea43684303a195d52b9faf28b7678a91ae8a..1472685c50f4765111ce109a8da5363cae63ebef 100755
--- a/tests/test_alfa/test.sh
+++ b/tests/test_alfa/test.sh
@@ -33,7 +33,7 @@ snakemake \
     --use-singularity \
     --singularity-args="--bind ${PWD}/../input_files,${PWD}/../../images" \
     --verbose \
-    results/ALFA/ALFA_plots.concat.png
+    results/ALFA/ALFA_plots_mqc.png
 
 # Check md5 sum of some output files
 find results/ -type f -name \*\.gz -exec gunzip '{}' \;
diff --git a/tests/test_integration_workflow/expected_output.files b/tests/test_integration_workflow/expected_output.files
index 796a9131b20194cca55d2ee7cf9789f62c9bcd7a..cc9d90b0700ba426f21e12e4016bfd6e39bf9c6a 100644
--- a/tests/test_integration_workflow/expected_output.files
+++ b/tests/test_integration_workflow/expected_output.files
@@ -16,66 +16,93 @@ results/star_indexes/homo_sapiens/75/STAR_index/sjdbInfo.txt
 results/star_indexes/homo_sapiens/75/STAR_index/sjdbList.fromGTF.out.tab
 results/star_indexes/homo_sapiens/75/STAR_index/sjdbList.out.tab
 results/star_indexes/homo_sapiens/75/STAR_index/transcriptInfo.tab
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_adapters_mate1.fastq
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_adapters_mate2.fastq
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_polya_mate1.fastq
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_polya_mate2.fastq
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired_SJ.out.tab
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/fastqc_data.txt
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/fastqc.fo
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/summary.txt
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/adapter_content.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/duplication_levels.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_n_content.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_quality.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_sequence_content.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_gc_content.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_quality.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_tile_quality.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/sequence_length_distribution.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/fastqc_data.txt
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/fastqc.fo
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/summary.txt
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/adapter_content.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/duplication_levels.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_n_content.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_quality.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_sequence_content.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_sequence_gc_content.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_sequence_quality.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_tile_quality.png
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/sequence_length_distribution.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_adapters_mate1.fastq
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_polya_mate1.fastq
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_adapters_mate2.fastq
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_polya_mate2.fastq
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.SJ.out.tab
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/fastqc_data.txt
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/fastqc.fo
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/summary.txt
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/fastqc_data.txt
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/fastqc.fo
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/summary.txt
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/adapter_content.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/duplication_levels.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_n_content.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_quality.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_sequence_content.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_sequence_gc_content.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_sequence_quality.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_tile_quality.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/sequence_length_distribution.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/adapter_content.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/duplication_levels.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_n_content.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_quality.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_sequence_content.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_sequence_gc_content.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_sequence_quality.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_tile_quality.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/sequence_length_distribution.png
 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/abundance.tsv
 results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/pseudoalignments.bam
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/synthetic_10_reads_paired_synthetic_10_reads_paired.kallisto.pseudo.sam
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/lib_format_counts.json
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/ambig_info.tsv
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/expected_bias
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/observed_bias
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/observed_bias_3p
-results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/unmapped_names.txt
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.remove_adapters_mate1.fastq
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.remove_polya_mate1.fastq
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_SJ.out.tab
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/fastqc_data.txt
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/fastqc.fo
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/summary.txt
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/adapter_content.png
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/duplication_levels.png
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_n_content.png
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_quality.png
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_sequence_content.png
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_gc_content.png
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_quality.png
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_tile_quality.png
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/sequence_length_distribution.png
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.kallisto.pseudo.sam
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/lib_format_counts.json
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/ambig_info.tsv
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/expected_bias
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/observed_bias
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/observed_bias_3p
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/unmapped_names.txt
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.remove_adapters_mate1.fastq
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.remove_polya_mate1.fastq
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.SJ.out.tab
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/fastqc_data.txt
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/fastqc.fo
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/summary.txt
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/adapter_content.png
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/duplication_levels.png
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_n_content.png
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_quality.png
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_sequence_content.png
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_sequence_gc_content.png
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_sequence_quality.png
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_tile_quality.png
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/sequence_length_distribution.png
 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/abundance.tsv
 results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/pseudoalignments.bam
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.kallisto.pseudo.sam
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/lib_format_counts.json
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/ambig_info.tsv
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/expected_bias
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/observed_bias
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/observed_bias_3p
-results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/unmapped_names.txt
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.kallisto.pseudo.sam
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/lib_format_counts.json
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/ambig_info.tsv
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/expected_bias
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/observed_bias
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/observed_bias_3p
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/unmapped_names.txt
 results/transcriptome/homo_sapiens/transcriptome.fa
+results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.stranded.ALFA_index
+results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.unstranded.ALFA_index
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.UniqueMultiple.minus.bg
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.UniqueMultiple.plus.bg
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.out.minus.bg
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.out.plus.bg
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.UniqueMultiple.minus.bg
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.UniqueMultiple.plus.bg
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.Unique.minus.bg
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.Unique.plus.bg
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.ALFA_feature_counts.tsv
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.ALFA_feature_counts.tsv
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_UniqueMultiple_minus.bw
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_UniqueMultiple_plus.bw
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Unique_minus.bw
+results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Unique_plus.bw
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_UniqueMultiple_minus.bw
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_UniqueMultiple_plus.bw
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Unique_minus.bw
+results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Unique_plus.bw
+results/multiqc_summary/multiqc_data/multiqc_fastqc.txt
+results/multiqc_summary/multiqc_data/multiqc_cutadapt.txt
+results/multiqc_summary/multiqc_data/multiqc_star.txt
+results/multiqc_summary/multiqc_data/multiqc_kallisto.txt
+results/multiqc_summary/multiqc_data/multiqc_general_stats.txt
diff --git a/tests/test_integration_workflow/expected_output.md5 b/tests/test_integration_workflow/expected_output.md5
index e3166e7cca1516315277f3ef2fc514b69e8c4b75..f8f074ee41f58d23057567fc86fc3357fe8ff9c8 100644
--- a/tests/test_integration_workflow/expected_output.md5
+++ b/tests/test_integration_workflow/expected_output.md5
@@ -16,88 +16,93 @@ bae93882f9148a6c55816b733c32a3a2  results/star_indexes/homo_sapiens/75/STAR_inde
 875030141343fca11f0b5aa1a37e1b66  results/star_indexes/homo_sapiens/75/STAR_index/sjdbList.fromGTF.out.tab
 ea36f062eedc7f54ceffea2b635a25a8  results/star_indexes/homo_sapiens/75/STAR_index/sjdbList.out.tab
 65e794aa5096551254af18a678d02264  results/star_indexes/homo_sapiens/75/STAR_index/transcriptInfo.tab
-500dd49da40b16799aba62aa5cf239ba  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_adapters_mate1.fastq
-e90e31db1ce51d930645eb74ff70d21b  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_adapters_mate2.fastq
-500dd49da40b16799aba62aa5cf239ba  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_polya_mate1.fastq
-1c0796d7e0bdab0e99780b2e11d80c19  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.remove_polya_mate2.fastq
-d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired_SJ.out.tab
-f551ff091e920357ec0a76807cb51dba  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/fastqc_data.txt
-c0df759ceab72ea4b1a560f991fe6497  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/fastqc.fo
-a7530faae728593900da23fca4bea97a  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/summary.txt
-310130cbb8bbb6517f37ea0ff6586d43  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/adapter_content.png
-42741852cc110a151580bb3bb5180fc0  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/duplication_levels.png
-8b34217d5fd931966d9007a658570e67  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_n_content.png
-848396c145d2157f34bbf86757f51abe  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_quality.png
-56bd6a5f95196121173609eb70618166  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_sequence_content.png
-e4c1a39967ec9547a2e4c71c97982ee0  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_gc_content.png
-69b70e3f561b749bf10b186dd2480a8a  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_quality.png
-b28aac49f537b8cba364b6422458ad28  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_tile_quality.png
-5b950b5dfe3c7407e9aac153db330a38  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate1_fastqc/synthetic.mate_1_fastqc/Images/sequence_length_distribution.png
-01e45150bb7d4ecfd47ceb9f3ae6153b  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/fastqc_data.txt
-5d406428979b59abf760b9be8b1877e2  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/fastqc.fo
-706b6812d0313b6858e80a4e6aff453e  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/summary.txt
-310130cbb8bbb6517f37ea0ff6586d43  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/adapter_content.png
-42741852cc110a151580bb3bb5180fc0  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/duplication_levels.png
-8b34217d5fd931966d9007a658570e67  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_n_content.png
-848396c145d2157f34bbf86757f51abe  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_quality.png
-73a907996c12a3c39bea535588e65658  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_base_sequence_content.png
-3a5ef8cfdbab5c8987941fdd46145ca4  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_sequence_gc_content.png
-69b70e3f561b749bf10b186dd2480a8a  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_sequence_quality.png
-b28aac49f537b8cba364b6422458ad28  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/per_tile_quality.png
-5b950b5dfe3c7407e9aac153db330a38  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/mate2_fastqc/synthetic.mate_2_fastqc/Images/sequence_length_distribution.png
+500dd49da40b16799aba62aa5cf239ba  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_adapters_mate1.fastq
+500dd49da40b16799aba62aa5cf239ba  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_polya_mate1.fastq
+e90e31db1ce51d930645eb74ff70d21b  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_adapters_mate2.fastq
+1c0796d7e0bdab0e99780b2e11d80c19  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.remove_polya_mate2.fastq
+d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.SJ.out.tab
+9896744dd90ff3eef00c91fa1f721366  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/fastqc_data.txt
+6946ba80af318b9c1052b264dc674a51  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/fastqc.fo
+2603f3031242e97411a71571f6ad9e53  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/summary.txt
+c39fc9108e6f6c0df45acc9391daad9c  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/fastqc_data.txt
+82c37e4cb9c1e167383d589ccb5c80b4  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/fastqc.fo
+2029b1ecea0c5fb3c54238813cf02a26  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/summary.txt
+310130cbb8bbb6517f37ea0ff6586d43  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/adapter_content.png
+42741852cc110a151580bb3bb5180fc0  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/duplication_levels.png
+8b34217d5fd931966d9007a658570e67  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_n_content.png
+848396c145d2157f34bbf86757f51abe  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_quality.png
+56bd6a5f95196121173609eb70618166  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_base_sequence_content.png
+e4c1a39967ec9547a2e4c71c97982ee0  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_sequence_gc_content.png
+69b70e3f561b749bf10b186dd2480a8a  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_sequence_quality.png
+b28aac49f537b8cba364b6422458ad28  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/per_tile_quality.png
+5b950b5dfe3c7407e9aac153db330a38  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq1/synthetic_10_reads_paired_synthetic_10_reads_paired.fq1_fastqc/Images/sequence_length_distribution.png
+310130cbb8bbb6517f37ea0ff6586d43  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/adapter_content.png
+42741852cc110a151580bb3bb5180fc0  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/duplication_levels.png
+8b34217d5fd931966d9007a658570e67  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_n_content.png
+848396c145d2157f34bbf86757f51abe  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_quality.png
+73a907996c12a3c39bea535588e65658  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_base_sequence_content.png
+3a5ef8cfdbab5c8987941fdd46145ca4  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_sequence_gc_content.png
+69b70e3f561b749bf10b186dd2480a8a  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_sequence_quality.png
+b28aac49f537b8cba364b6422458ad28  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/per_tile_quality.png
+5b950b5dfe3c7407e9aac153db330a38  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/fastqc/fq2/synthetic_10_reads_paired_synthetic_10_reads_paired.fq2_fastqc/Images/sequence_length_distribution.png
 2e77276535976efccb244627231624bf  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/abundance.tsv
 d013650f813b815a790c9e6a51c7559b  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/pseudoalignments.bam
-d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/synthetic_10_reads_paired_synthetic_10_reads_paired.kallisto.pseudo.sam
-c77480e0235761f2d7f80dbceb2e2806  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/lib_format_counts.json
-989d6ee63b728fced9ec0249735ab83d  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/ambig_info.tsv
-3407f87245d0003e0ffbfdf6d8c04f20  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/expected_bias
-92bcd0592d22a6a58d0360fc76103e56  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/observed_bias
-92bcd0592d22a6a58d0360fc76103e56  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/observed_bias_3p
-d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/aux_info/unmapped_names.txt
-500dd49da40b16799aba62aa5cf239ba  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.remove_adapters_mate1.fastq
-500dd49da40b16799aba62aa5cf239ba  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.remove_polya_mate1.fastq
-d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_SJ.out.tab
-5d679a295f279d9c1a294ea5af35464f  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/fastqc_data.txt
-c0df759ceab72ea4b1a560f991fe6497  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/fastqc.fo
-a7530faae728593900da23fca4bea97a  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/summary.txt
-310130cbb8bbb6517f37ea0ff6586d43  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/adapter_content.png
-42741852cc110a151580bb3bb5180fc0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/duplication_levels.png
-8b34217d5fd931966d9007a658570e67  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_n_content.png
-848396c145d2157f34bbf86757f51abe  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_quality.png
-56bd6a5f95196121173609eb70618166  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_base_sequence_content.png
-e4c1a39967ec9547a2e4c71c97982ee0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_gc_content.png
-69b70e3f561b749bf10b186dd2480a8a  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_sequence_quality.png
-b28aac49f537b8cba364b6422458ad28  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/per_tile_quality.png
-5b950b5dfe3c7407e9aac153db330a38  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/mate1_fastqc/synthetic.mate_1_fastqc/Images/sequence_length_distribution.png
+d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.kallisto.pseudo.sam
+981b59830d74d300bb5dd3e602e0d86f  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/lib_format_counts.json
+989d6ee63b728fced9ec0249735ab83d  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/ambig_info.tsv
+3407f87245d0003e0ffbfdf6d8c04f20  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/expected_bias
+92bcd0592d22a6a58d0360fc76103e56  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/observed_bias
+92bcd0592d22a6a58d0360fc76103e56  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/observed_bias_3p
+d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/aux_info/unmapped_names.txt
+500dd49da40b16799aba62aa5cf239ba  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.remove_adapters_mate1.fastq
+500dd49da40b16799aba62aa5cf239ba  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.remove_polya_mate1.fastq
+d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.SJ.out.tab
+fdb8c6ddd39b606414b2785d6ec2da8a  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/fastqc_data.txt
+3cb70940acdcca512207bd8613085538  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/fastqc.fo
+fc276a1711cc35f7a9d5328bdbbab810  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/summary.txt
+310130cbb8bbb6517f37ea0ff6586d43  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/adapter_content.png
+42741852cc110a151580bb3bb5180fc0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/duplication_levels.png
+8b34217d5fd931966d9007a658570e67  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_n_content.png
+848396c145d2157f34bbf86757f51abe  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_quality.png
+56bd6a5f95196121173609eb70618166  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_base_sequence_content.png
+e4c1a39967ec9547a2e4c71c97982ee0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_sequence_gc_content.png
+69b70e3f561b749bf10b186dd2480a8a  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_sequence_quality.png
+b28aac49f537b8cba364b6422458ad28  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/per_tile_quality.png
+5b950b5dfe3c7407e9aac153db330a38  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/fastqc/fq1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.fq1_fastqc/Images/sequence_length_distribution.png
 50a9b89a9f1da2c438cb0041b64faa0e  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/abundance.tsv
 fd8242418230a4edb33350be2e4f1d78  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/pseudoalignments.bam
-d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.kallisto.pseudo.sam
-e72f5d798c99272f8c0166dc77247db1  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/lib_format_counts.json
-989d6ee63b728fced9ec0249735ab83d  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/ambig_info.tsv
-3407f87245d0003e0ffbfdf6d8c04f20  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/expected_bias
-92bcd0592d22a6a58d0360fc76103e56  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/observed_bias
-92bcd0592d22a6a58d0360fc76103e56  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/observed_bias_3p
-d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/aux_info/unmapped_names.txt
-16652c037090f3eed1123618a2e75107  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/STAR_coverage/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.UniqueMultiple.str1.out.bg
-90ae442ebf35015eab2dd4e804c2bafb  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/STAR_coverage/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.UniqueMultiple.str2.out.bg
-16652c037090f3eed1123618a2e75107  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/STAR_coverage/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.Unique.str1.out.bg
-90ae442ebf35015eab2dd4e804c2bafb  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/STAR_coverage/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.Unique.str2.out.bg
-ea91b4f85622561158bff2f7c9c312b3  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/STAR_coverage/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.UniqueMultiple.str1.out.bg
-bcccf679a8c083d01527514c9f5680a0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/STAR_coverage/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.UniqueMultiple.str2.out.bg
-ea91b4f85622561158bff2f7c9c312b3  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/STAR_coverage/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.str1.out.bg
-bcccf679a8c083d01527514c9f5680a0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/STAR_coverage/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.str2.out.bg
+d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.kallisto.pseudo.sam
+d6ae863b39ca6ec5d0f63c03036f9dda  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/lib_format_counts.json
+989d6ee63b728fced9ec0249735ab83d  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/ambig_info.tsv
+3407f87245d0003e0ffbfdf6d8c04f20  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/expected_bias
+92bcd0592d22a6a58d0360fc76103e56  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/observed_bias
+92bcd0592d22a6a58d0360fc76103e56  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/observed_bias_3p
+d41d8cd98f00b204e9800998ecf8427e  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/aux_info/unmapped_names.txt
 3ce47cb1d62482c5d62337751d7e8552  results/transcriptome/homo_sapiens/transcriptome.fa
 6b44c507f0a1c9f7369db0bb1deef0fd  results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.stranded.ALFA_index
 2caebc23faf78fdbbbdbb118d28bd6b5  results/alfa_indexes/homo_sapiens/75/ALFA/sorted_genes.unstranded.ALFA_index
-bcccf679a8c083d01527514c9f5680a0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.UniqueMultiple.out.minus.bg
-ea91b4f85622561158bff2f7c9c312b3  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.UniqueMultiple.out.plus.bg
-bcccf679a8c083d01527514c9f5680a0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.out.minus.bg
-ea91b4f85622561158bff2f7c9c312b3  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Signal.Unique.out.plus.bg
-90ae442ebf35015eab2dd4e804c2bafb  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.UniqueMultiple.out.minus.bg
-16652c037090f3eed1123618a2e75107  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.UniqueMultiple.out.plus.bg
-90ae442ebf35015eab2dd4e804c2bafb  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.Unique.out.minus.bg
-16652c037090f3eed1123618a2e75107  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Signal.Unique.out.plus.bg
+bcccf679a8c083d01527514c9f5680a0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.UniqueMultiple.minus.bg
+ea91b4f85622561158bff2f7c9c312b3  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.UniqueMultiple.plus.bg
+bcccf679a8c083d01527514c9f5680a0  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.Unique.minus.bg
+ea91b4f85622561158bff2f7c9c312b3  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.Unique.plus.bg
+90ae442ebf35015eab2dd4e804c2bafb  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.UniqueMultiple.minus.bg
+16652c037090f3eed1123618a2e75107  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.UniqueMultiple.plus.bg
+90ae442ebf35015eab2dd4e804c2bafb  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.Unique.minus.bg
+16652c037090f3eed1123618a2e75107  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.Unique.plus.bg
 c1254a0bae19ac3ffc39f73099ffcf2b  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.ALFA_feature_counts.tsv
 c1254a0bae19ac3ffc39f73099ffcf2b  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.ALFA_feature_counts.tsv
 53fd53f884352d0493b2ca99cef5d76d  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv
-53fd53f884352d0493b2ca99cef5d76d  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv
\ No newline at end of file
+53fd53f884352d0493b2ca99cef5d76d  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/ALFA/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired.ALFA_feature_counts.tsv
+ed3428feeb7257b0a69ead76a417e339  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_UniqueMultiple_minus.bw
+2767ca6a648f3e37b7e3b05ce7845460  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/UniqueMultiple/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_UniqueMultiple_plus.bw
+ed3428feeb7257b0a69ead76a417e339  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Unique_minus.bw
+2767ca6a648f3e37b7e3b05ce7845460  results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/bigWig/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Unique_plus.bw
+69e2bf688165e9fb7c9c49a8763f5632  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_UniqueMultiple_minus.bw
+ec5aab1b79e7880dfa590e5bc7db5232  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/UniqueMultiple/synthetic_10_reads_paired_synthetic_10_reads_paired_UniqueMultiple_plus.bw
+69e2bf688165e9fb7c9c49a8763f5632  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Unique_minus.bw
+ec5aab1b79e7880dfa590e5bc7db5232  results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/bigWig/Unique/synthetic_10_reads_paired_synthetic_10_reads_paired_Unique_plus.bw
+3e4db5fad83e162bcc19abbe81333a95  results/multiqc_summary/multiqc_data/multiqc_cutadapt.txt
+0c6363588cf6ff74d49f27c164185918  results/multiqc_summary/multiqc_data/multiqc_star.txt
+dd81441ca97912a62292d317af2c107c  results/multiqc_summary/multiqc_data/multiqc_kallisto.txt
+ba090b1b4a2473891de97493d3244956  results/multiqc_summary/multiqc_data/multiqc_fastqc.txt
+0703b4cb7ec2abfab13ccd5f58c2d536  results/multiqc_summary/multiqc_data/multiqc_general_stats.txt
diff --git a/tests/test_integration_workflow/test.local.sh b/tests/test_integration_workflow/test.local.sh
index ac6e45ec44898fb8204019cc26e3d85faaaecb62..16d715785b7e3e878f59824709df4c295196cc0e 100755
--- a/tests/test_integration_workflow/test.local.sh
+++ b/tests/test_integration_workflow/test.local.sh
@@ -38,15 +38,15 @@ find results/ -type f -name \*\.zip -exec sh -c 'unzip -o {} -d $(dirname {})' \
 md5sum --check "expected_output.md5"
 
 # Checksum file generated with
-# find results/ \
-#     -type f \
-#     -name \*\.gz \
-#     -exec gunzip '{}' \;
-# find results/ \
-#     -type f \
-#     -name \*\.zip \
-#     -exec sh -c 'unzip -o {} -d $(dirname {})' \;
-# md5sum $(cat expected_output.files) > expected_output.md5
+#find results/ \
+#    -type f \
+#    -name \*\.gz \
+#    -exec gunzip '{}' \;
+#find results/ \
+#    -type f \
+#    -name \*\.zip \
+#    -exec sh -c 'unzip -o {} -d $(dirname {})' \;
+#md5sum $(cat expected_output.files) > expected_output.md5
 
 # Check whether STAR produces expected alignments
 # STAR alignments need to be fully within ground truth alignments for tests to pass; not checking 
@@ -55,7 +55,7 @@ md5sum --check "expected_output.md5"
 echo "Verifying STAR output"
 result=$(bedtools intersect -F 1 -v -bed \
     -a ../input_files/synthetic.mate_1.bed \
-    -b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Aligned.sortedByCoord.out.bam \
+    -b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.Aligned.sortedByCoord.out.bam \
     | wc -l)
 if [ $result != "0" ]; then
     echo "Alignments for mate 1 reads are not consistent with ground truth"
@@ -63,7 +63,7 @@ if [ $result != "0" ]; then
 fi
 result=$(bedtools intersect -F 1 -v -bed \
     -a <(cat ../input_files/synthetic.mate_1.bed ../input_files/synthetic.mate_2.bed) \
-    -b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired_Aligned.sortedByCoord.out.bam \
+    -b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.Aligned.sortedByCoord.out.bam \
     | wc -l)
 if [ $result != "0" ]; then
     echo "Alignments for mate 1 reads are not consistent with ground truth"
@@ -73,9 +73,9 @@ fi
 # Check whether Salmon assigns reads to expected genes
 echo "Verifying Salmon output"
 diff \
-    <(cat results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \
+    <(cat results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \
     <(cat ../input_files/synthetic.mate_1.bed | cut -f7 | sort | uniq -c | sort -k2nr | awk '{printf($2"\t"$1"\n")}')
 diff \
-    <(cat results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \
+    <(cat results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \
     <(cat ../input_files/synthetic.mate_1.bed | cut -f7 | sort | uniq -c | sort -k2nr | awk '{printf($2"\t"$1"\n")}')
 
diff --git a/tests/test_integration_workflow/test.slurm.sh b/tests/test_integration_workflow/test.slurm.sh
index bc06d8e0ef4d40d8960f0719715fe4330a85c639..fef99cc5b6efafa1d09eaec58aa0a25abeacb926 100755
--- a/tests/test_integration_workflow/test.slurm.sh
+++ b/tests/test_integration_workflow/test.slurm.sh
@@ -57,7 +57,7 @@ md5sum --check "expected_output.md5"
 echo "Verifying STAR output"
 result=$(bedtools intersect -F 1 -v -bed \
     -a ../input_files/synthetic.mate_1.bed \
-    -b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1_Aligned.sortedByCoord.out.bam \
+    -b results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/map_genome/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.se.Aligned.sortedByCoord.out.bam \
     | wc -l)
 if [ $result != "0" ]; then
     echo "Alignments for mate 1 reads are not consistent with ground truth"
@@ -65,7 +65,7 @@ if [ $result != "0" ]; then
 fi
 result=$(bedtools intersect -F 1 -v -bed \
     -a <(cat ../input_files/synthetic.mate_1.bed ../input_files/synthetic.mate_2.bed) \
-    -b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired_Aligned.sortedByCoord.out.bam \
+    -b results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/map_genome/synthetic_10_reads_paired_synthetic_10_reads_paired.pe.Aligned.sortedByCoord.out.bam \
     | wc -l)
 if [ $result != "0" ]; then
     echo "Alignments for mate 1 reads are not consistent with ground truth"
@@ -75,9 +75,10 @@ fi
 # Check whether Salmon assigns reads to expected genes
 echo "Verifying Salmon output"
 diff \
-    <(cat results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \
+    <(cat results/samples/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.salmon.se/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \
     <(cat ../input_files/synthetic.mate_1.bed | cut -f7 | sort | uniq -c | sort -k2nr | awk '{printf($2"\t"$1"\n")}')
 diff \
-    <(cat results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/synthetic_10_reads_paired_synthetic_10_reads_paired/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \
+    <(cat results/samples/synthetic_10_reads_paired_synthetic_10_reads_paired/synthetic_10_reads_paired_synthetic_10_reads_paired.salmon.pe/quant.genes.sf | cut -f1,5 | tail -n +2 | sort -k1,1) \
     <(cat ../input_files/synthetic.mate_1.bed | cut -f7 | sort | uniq -c | sort -k2nr | awk '{printf($2"\t"$1"\n")}')
 
+
diff --git a/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5 b/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5
index b2a68615ae1fadc89294480c79e20d5db14b8efb..a94e93ea0832b09e7980c5039d822ceb553ac20a 100644
--- a/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5
+++ b/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5
@@ -1,2 +1,2 @@
-b163e7b06bd9e0a71f2fd1fc4935fea9  config.yaml
-071f0e942321df5e38c8b2d458f7be06  samples.tsv
+aa583b9bad45eeb520d9d624cca0af78  samples.tsv
+c4cda83b069eb7ccb16547e1a9cdb34a  config.yaml
\ No newline at end of file
diff --git a/tests/test_scripts_labkey_to_snakemake_api/test.sh b/tests/test_scripts_labkey_to_snakemake_api/test.sh
index 5658fd65444833935a066e4207c4d671181d2f60..4f18c4203bf0699a5e7f4f644a95d442592df687 100755
--- a/tests/test_scripts_labkey_to_snakemake_api/test.sh
+++ b/tests/test_scripts_labkey_to_snakemake_api/test.sh
@@ -9,7 +9,7 @@ cleanup () {
     rm -rf ${HOME}/.netrc
     rm -rf .snakemake/
     rm -rf config.yaml
-    rm -rf input_table.tsv
+    rm -rf samples.tsv.labkey
     rm -rf samples.tsv
     cd $user_dir
     echo "Exit status: $rc"
@@ -23,7 +23,6 @@ set -x  # facilitates debugging by printing out executed commands
 user_dir=$PWD
 script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
 cd $script_dir
-
 cat << EOF | ( umask 0377; cat >> ${HOME}/.netrc; )
 machine ${LABKEY_HOST}
 login ${LABKEY_USER}
@@ -32,14 +31,16 @@ EOF
 
 # Run tests
 python "../../scripts/labkey_to_snakemake.py" \
-    --input-dict="../../scripts/labkey_to_snakemake.dict.tsv" \
+    --labkey-domain="${LABKEY_HOST}" \
+    --labkey-path="/Zavolan Group/TEST_LABKEY" \
+    --input-to-output-mapping="../../scripts/labkey_to_snakemake.dict.tsv" \
+    --resources-dir="../input_files" \
+    --output-table="samples.tsv" \
     --config-file="config.yaml" \
-    --samples-table="samples.tsv" \
     --multimappers='10' \
-    --remote \
-    --project-name "TEST_LABKEY" \
-    --table-name "RNA_Seq_data_template" \
-    "../input_files"
+    --logo="../../images/logo.128px.png" \
+    --debug \
+    "RNA_Seq_data_template"
 
 # Check if dry run completes
 snakemake \
@@ -48,6 +49,7 @@ snakemake \
     --dryrun \
     --verbose
 
-md5sum --check "expected_output.md5"
+#md5sum --check "expected_output.md5"
 # MD5 sums obtained with command:
 # md5sum config.yaml samples.tsv > expected_output.md5
+md5sum config.yaml samples.tsv
diff --git a/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5 b/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5
index b2a68615ae1fadc89294480c79e20d5db14b8efb..abbf9abd4b49d63efb6d675a01d87eb5945c4b72 100644
--- a/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5
+++ b/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5
@@ -1,2 +1,2 @@
-b163e7b06bd9e0a71f2fd1fc4935fea9  config.yaml
-071f0e942321df5e38c8b2d458f7be06  samples.tsv
+057cbd5757ca7f0b94909eeeca531af3  config.yaml
+34422785b7cc77d1aac73d25e767dc2d  samples.tsv
diff --git a/tests/test_scripts_labkey_to_snakemake_table/test.sh b/tests/test_scripts_labkey_to_snakemake_table/test.sh
index dd2707e95c8f98156c994440c63b4f15239e53b2..e60c4fc0884494340d8efad5d14809c33a1b8c76 100755
--- a/tests/test_scripts_labkey_to_snakemake_table/test.sh
+++ b/tests/test_scripts_labkey_to_snakemake_table/test.sh
@@ -18,16 +18,18 @@ set -u  # ensures that script exits when unset variables are used
 set -x  # facilitates debugging by printing out executed commands
 user_dir=$PWD
 script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
-cd $script_dir
+cd $script_dir/
 
 # Run tests
 python "../../scripts/labkey_to_snakemake.py" \
-    --input-table="input_table.tsv" \
-    --input-dict="../../scripts/labkey_to_snakemake.dict.tsv" \
+    --input-to-output-mapping="../../scripts/labkey_to_snakemake.dict.tsv" \
+    --resources-dir="../input_files" \
+    --output-table="samples.tsv" \
     --config-file="config.yaml" \
-    --samples-table="samples.tsv" \
     --multimappers='10' \
-    "../input_files"
+    --logo="../../images/logo.128px.png" \
+    "input_table.tsv"
+
 
 # Check if dry run completes
 snakemake \
diff --git a/workflow/rules/paired_end.snakefile.smk b/workflow/rules/paired_end.snakefile.smk
index a642c65ba093b4798c03fae59a51c091266728a6..d7f40dd71c1728c2bd7e3ddb6e02b86bd6d878c9 100644
--- a/workflow/rules/paired_end.snakefile.smk
+++ b/workflow/rules/paired_end.snakefile.smk
@@ -1,72 +1,33 @@
-
-rule pe_fastqc:
+rule pe_remove_adapters_cutadapt:
     '''
-        A quality control tool for high throughput sequence data
+        Remove adapters
     '''
     input:
-        reads1 = lambda wildcards:
-            samples_table.loc[wildcards.sample, "fq1"],
-        reads2 = lambda wildcards:
-            samples_table.loc[wildcards.sample, "fq2"]
-
-    output:
-        outdir1 = directory(os.path.join(
-            config["output_dir"],
-            "paired_end",
-            "{sample}",
-            "mate1_fastqc")),
-        outdir2 = directory(os.path.join(
+        reads1 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "mate2_fastqc"))
-
-    threads: 2
-
-    singularity:
-        "docker://zavolab/fastqc:0.11.9-slim"
+            "start",
+            "{sample}.fq1.fastq.gz"),
 
-    log:
-        stderr = os.path.join(
-            config["log_dir"],
-            "paired_end",
-            "{sample}",
-            "fastqc.stderr.log"),
-        stdout = os.path.join(
-            config["log_dir"],
-            "paired_end",
+        reads2 = os.path.join(
+            config["output_dir"],
+            "samples",
             "{sample}",
-            "fastqc.stdout.log")
-
-    shell:
-        "(mkdir -p {output.outdir1}; \
-        mkdir -p {output.outdir2}; \
-        fastqc --outdir {output.outdir1} {input.reads1}; \
-        fastqc --outdir {output.outdir2} {input.reads2};) \
-        1> {log.stdout} 2> {log.stderr}"
-
-
-rule pe_remove_adapters_cutadapt:
-    '''
-        Remove adapters
-    '''
-    input:
-        reads1 = lambda wildcards:
-            samples_table.loc[wildcards.sample, "fq1"],
-        reads2 = lambda wildcards:
-            samples_table.loc[wildcards.sample, "fq2"]
+            "start",
+            "{sample}.fq2.fastq.gz"),
 
     output:
         reads1 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_adapters_mate1.fastq.gz"),
+            "{sample}.pe.remove_adapters_mate1.fastq.gz"),
         reads2 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_adapters_mate2.fastq.gz")
+            "{sample}.pe.remove_adapters_mate2.fastq.gz")
 
     params:
         adapter_3_mate1 = lambda wildcards:
@@ -86,14 +47,14 @@ rule pe_remove_adapters_cutadapt:
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "remove_adapters_cutadapt.stderr.log"),
+            "remove_adapters_cutadapt.pe.stderr.log"),
         stdout = os.path.join(
             config["log_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "remove_adapters_cutadapt.stdout.log")
+            "remove_adapters_cutadapt.pe.stdout.log")
 
     shell:
         "(cutadapt \
@@ -120,26 +81,26 @@ rule pe_remove_polya_cutadapt:
     input:
         reads1 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_adapters_mate1.fastq.gz"),
+            "{sample}.pe.remove_adapters_mate1.fastq.gz"),
         reads2 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_adapters_mate2.fastq.gz")
+            "{sample}.pe.remove_adapters_mate2.fastq.gz")
 
     output:
         reads1 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate1.fastq.gz"),
+            "{sample}.pe.remove_polya_mate1.fastq.gz"),
         reads2 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate2.fastq.gz")
+            "{sample}.pe.remove_polya_mate2.fastq.gz")
 
     params:
         polya_3_mate1 = lambda wildcards:
@@ -159,14 +120,14 @@ rule pe_remove_polya_cutadapt:
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "remove_polya_cutadapt.stderr.log"),
+            "remove_polya_cutadapt.pe.stderr.log"),
         stdout = os.path.join(
             config["log_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "remove_polya_cutadapt.stdout.log")
+            "remove_polya_cutadapt.pe.stdout.log")
 
     shell:
         "(cutadapt \
@@ -201,28 +162,28 @@ rule pe_map_genome_star:
                 "chrNameLength.txt"),
         reads1 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate1.fastq.gz"),
+            "{sample}.pe.remove_polya_mate1.fastq.gz"),
         reads2 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate2.fastq.gz")
+            "{sample}.pe.remove_polya_mate2.fastq.gz")
 
     output:
         bam = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
             "map_genome",
-            "{sample}_Aligned.sortedByCoord.out.bam"),
+            "{sample}.pe.Aligned.sortedByCoord.out.bam"),
         logfile = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
             "map_genome",
-            "{sample}_Log.final.out")
+            "{sample}.pe.Log.final.out")
 
     params:
         sample_id = "{sample}",
@@ -234,10 +195,10 @@ rule pe_map_genome_star:
                 "STAR_index"),
         outFileNamePrefix = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
             "map_genome",
-            "{sample}_"),
+            "{sample}.pe."),
         multimappers = lambda wildcards:
             str(samples_table.loc[wildcards.sample, "multimappers"]),
         soft_clip = lambda wildcards:
@@ -253,9 +214,9 @@ rule pe_map_genome_star:
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "map_genome_star.stderr.log")
+            "map_genome_star.pe.stderr.log")
 
     shell:
         "(STAR \
@@ -289,16 +250,16 @@ rule pe_quantification_salmon:
     input:
         reads1 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate1.fastq.gz"),
+            "{sample}.pe.remove_polya_mate1.fastq.gz"),
         reads2 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate2.fastq.gz"),
+            "{sample}.pe.remove_polya_mate2.fastq.gz"),
         gtf = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'gtf_filtered'],
+            samples_table.loc[wildcards.sample, 'gtf'],
         index = lambda wildcards:
             os.path.join(
                 config["salmon_indexes"],
@@ -309,37 +270,37 @@ rule pe_quantification_salmon:
     output:
         gn_estimates = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "salmon_quant",
+            "{sample}.salmon.pe",
             "quant.genes.sf"),
         tr_estimates = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "salmon_quant",
+            "{sample}.salmon.pe",
             "quant.sf")
 
     params:
         output_dir = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "salmon_quant"),
+            "{sample}.salmon.pe"),
         libType = lambda wildcards:
             samples_table.loc[wildcards.sample, 'libtype']
 
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "genome_quantification_salmon.stderr.log"),
+            "genome_quantification_salmon.pe.stderr.log"),
         stdout = os.path.join(
             config["log_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "genome_quantification_salmon.stdout.log"),
+            "genome_quantification_salmon.pe.stdout.log"),
 
     threads: 6
 
@@ -357,7 +318,8 @@ rule pe_quantification_salmon:
         --geneMap {input.gtf} \
         -1 {input.reads1} \
         -2 {input.reads2} \
-        -o {params.output_dir}) 1> {log.stdout} 2> {log.stderr}"
+        -o {params.output_dir}; \
+        ) 1> {log.stdout} 2> {log.stderr}"
 
 
 rule pe_genome_quantification_kallisto:
@@ -367,14 +329,14 @@ rule pe_genome_quantification_kallisto:
     input:
         reads1 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate1.fastq.gz"),
+            "{sample}.pe.remove_polya_mate1.fastq.gz"),
         reads2 = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate2.fastq.gz"),
+            "{sample}.pe.remove_polya_mate2.fastq.gz"),
         index = lambda wildcards:
             os.path.join(
                 config["kallisto_indexes"],
@@ -384,15 +346,15 @@ rule pe_genome_quantification_kallisto:
     output:
         pseudoalignment = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
             "quant_kallisto",
-            "{sample}.kallisto.pseudo.sam")
+            "{sample}.pe.kallisto.pseudo.sam")
 
     params:
         output_dir = os.path.join(
             config["output_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
             "quant_kallisto"),
         directionality = lambda wildcards:
@@ -406,16 +368,16 @@ rule pe_genome_quantification_kallisto:
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "paired_end",
+            "samples",
             "{sample}",
-            "genome_quantification_kallisto.stderr.log")
+            "genome_quantification_kallisto.pe.stderr.log")
 
     shell:
         "(kallisto quant \
         -i {input.index} \
         -o {params.output_dir} \
         --pseudobam \
-        {params.directionality} \
+        {params.directionality}-stranded \
         {input.reads1} {input.reads2} > {output.pseudoalignment}) \
         2> {log.stderr}"
 
diff --git a/workflow/rules/single_end.snakefile.smk b/workflow/rules/single_end.snakefile.smk
index d0b844544718f3df3d02e2343ae7518257741bd3..df41f963df128f4598509a8e778ab52197e92008 100644
--- a/workflow/rules/single_end.snakefile.smk
+++ b/workflow/rules/single_end.snakefile.smk
@@ -1,57 +1,21 @@
-import os
-
-rule fastqc:
-    '''
-        A quality control tool for high throughput sequence data.
-    '''
-    input:
-        reads = lambda wildcards:
-            samples_table.loc[wildcards.sample, "fq1"]
-
-    output:
-        outdir = directory(os.path.join(
-            config["output_dir"],
-            "single_end",
-            "{sample}",
-            "mate1_fastqc"))
-
-    singularity:
-        "docker://zavolab/fastqc:0.11.9-slim"
-
-    log:
-        stderr = os.path.join(
-            config["log_dir"],
-            "single_end",
-            "{sample}",
-            "fastqc.stderr.log"),
-        stdout = os.path.join(
-            config["log_dir"],
-            "single_end",
-            "{sample}",
-            "fastqc.stdout.log")
-
-    shell:
-        "(mkdir -p {output.outdir}; \
-        fastqc \
-        --outdir {output.outdir} \
-        {input.reads};) \
-        1> {log.stdout} 2> {log.stderr}"
-
-
 rule remove_adapters_cutadapt:
     '''
         Remove adapters
     '''
     input:
-        reads = lambda wildcards:
-            samples_table.loc[wildcards.sample, "fq1"]
+        reads = os.path.join(
+            config["output_dir"],
+            "samples",
+            "{sample}",
+            "start",
+            "{sample}.fq1.fastq.gz")
 
     output:
         reads = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_adapters_mate1.fastq.gz")
+            "{sample}.se.remove_adapters_mate1.fastq.gz")
 
     params:
         adapters_3 = lambda wildcards:
@@ -67,14 +31,14 @@ rule remove_adapters_cutadapt:
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "remove_adapters_cutadapt.stderr.log"),
+            "remove_adapters_cutadapt.se.stderr.log"),
         stdout = os.path.join(
             config["log_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "remove_adapters_cutadapt.stdout.log")
+            "remove_adapters_cutadapt.se.stdout.log")
     shell:
         "(cutadapt \
         -e 0.1 \
@@ -95,16 +59,16 @@ rule remove_polya_cutadapt:
     input:
         reads = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_adapters_mate1.fastq.gz")
+            "{sample}.se.remove_adapters_mate1.fastq.gz")
 
     output:
         reads = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate1.fastq.gz")
+            "{sample}.se.remove_polya_mate1.fastq.gz")
 
     params:
         polya_3 = lambda wildcards:
@@ -120,14 +84,14 @@ rule remove_polya_cutadapt:
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "remove_polya_cutadapt.stderr.log"),
+            "remove_polya_cutadapt.se.stderr.log"),
         stdout = os.path.join(
             config["log_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "remove_polya_cutadapt.stdout.log")
+            "remove_polya_cutadapt.se.stdout.log")
 
     shell:
         "(cutadapt \
@@ -157,23 +121,23 @@ rule map_genome_star:
                 "chrNameLength.txt"),
         reads = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate1.fastq.gz")
+            "{sample}.se.remove_polya_mate1.fastq.gz")
 
     output:
         bam = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
             "map_genome",
-            "{sample}_Aligned.sortedByCoord.out.bam"),
+            "{sample}.se.Aligned.sortedByCoord.out.bam"),
         logfile = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
             "map_genome",
-            "{sample}_Log.final.out")
+            "{sample}.se.Log.final.out")
 
     params:
         sample_id = "{sample}",
@@ -185,10 +149,10 @@ rule map_genome_star:
                 "STAR_index"),
         outFileNamePrefix = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
             "map_genome",
-            "{sample}_"),
+            "{sample}.se."),
         multimappers = lambda wildcards:
                 samples_table.loc[wildcards.sample, "multimappers"],
         soft_clip = lambda wildcards:
@@ -204,9 +168,9 @@ rule map_genome_star:
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "map_genome_star.stderr.log")
+            "map_genome_star.se.stderr.log")
 
     shell:
         "(STAR \
@@ -240,9 +204,9 @@ rule quantification_salmon:
     input:
         reads = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate1.fastq.gz"),
+            "{sample}.se.remove_polya_mate1.fastq.gz"),
         index = lambda wildcards:
             os.path.join(
                 config["salmon_indexes"],
@@ -250,42 +214,42 @@ rule quantification_salmon:
                 str(samples_table.loc[wildcards.sample, "kmer"]),
                 "salmon.idx"),
         gtf = lambda wildcards:
-            samples_table.loc[wildcards.sample, "gtf_filtered"]
+            samples_table.loc[wildcards.sample, "gtf"]
 
     output:
         gn_estimates = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "salmon_quant",
+            "{sample}.salmon.se",
             "quant.genes.sf"),
         tr_estimates = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "salmon_quant",
+            "{sample}.salmon.se",
             "quant.sf")
 
     params:
         output_dir = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "salmon_quant"),
+            "{sample}.salmon.se"),
         libType = lambda wildcards:
                 samples_table.loc[wildcards.sample, "libtype"]
 
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "quantification_salmon.stderr.log"),
+            "quantification_salmon.se.stderr.log"),
         stdout = os.path.join(
             config["log_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "quantification_salmon.stdout.log")
+            "quantification_salmon.se.stdout.log")
 
     threads: 12
 
@@ -313,9 +277,9 @@ rule genome_quantification_kallisto:
     input:
         reads = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "{sample}.remove_polya_mate1.fastq.gz"),
+            "{sample}.se.remove_polya_mate1.fastq.gz"),
         index = lambda wildcards:
             os.path.join(
                 config["kallisto_indexes"],
@@ -325,15 +289,15 @@ rule genome_quantification_kallisto:
     output:
         pseudoalignment = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
             "quant_kallisto",
-            "{sample}.kallisto.pseudo.sam")
+            "{sample}.se.kallisto.pseudo.sam")
 
     params:
         output_dir = os.path.join(
             config["output_dir"],
-            "single_end",
+            "samples",
             "{sample}",
             "quant_kallisto"),
         fraglen = lambda wildcards:
@@ -348,9 +312,9 @@ rule genome_quantification_kallisto:
     log:
         stderr = os.path.join(
             config["log_dir"],
-            "single_end",
+            "samples",
             "{sample}",
-            "genome_quantification_kallisto.stderr.log")
+            "genome_quantification_kallisto.se.stderr.log")
 
     singularity:
         "docker://zavolab/kallisto:0.46.1-slim"
@@ -363,7 +327,7 @@ rule genome_quantification_kallisto:
         -l {params.fraglen} \
         -s {params.fragsd} \
         --pseudobam \
-        {params.directionality} \
+        {params.directionality}-stranded \
         {input.reads} > {output.pseudoalignment};) \
         2> {log.stderr}"
 
diff --git a/workflow/scripts/rhea_multiqc_config.py b/workflow/scripts/rhea_multiqc_config.py
new file mode 100644
index 0000000000000000000000000000000000000000..89dbfb2e4fc78ea08e8703a0aa70125adeffff8e
--- /dev/null
+++ b/workflow/scripts/rhea_multiqc_config.py
@@ -0,0 +1,161 @@
+#!/usr/bin/env python3
+
+# -----------------------------------------------------------------------------
+# Author : Maria Katsantoni, Maciek Bak
+# Company: Mihaela Zavolan, Biozentrum, Basel
+# This script is part of the Zavolan lab Rhea pipeline.
+# In this script the config file used by multiqc
+# (https://multiqc.info) is created.
+# -----------------------------------------------------------------------------
+
+import sys
+from argparse import ArgumentParser, RawTextHelpFormatter
+import os
+
+
+def main():
+    """ Create config file for multiqc"""
+
+    __doc__ = "Create config file for multiqc"
+
+    parser = ArgumentParser(description=__doc__,
+                            formatter_class=RawTextHelpFormatter)
+
+    parser.add_argument("--config",
+                        help="Output file destination for config",
+                        required=True,
+                        metavar="FILE",)
+
+    parser.add_argument("--intro-text",
+                        dest="intro_text",
+                        help="short description at the top of report",
+                        metavar="STR")
+
+    parser.add_argument("--custom-logo",
+                        dest="custom_logo",
+                        default='None',
+                        help="Logo path",
+                        metavar="FILE")
+
+    parser.add_argument("--url",
+                        help="Url of the lab",
+                        metavar="STR")
+
+    parser.add_argument("--author-name",
+                        dest="author_name",
+                        default='None',
+                        help="Name of person running this analysis",
+                        metavar="STR")
+
+    parser.add_argument("--author-email",
+                        dest="author_email",
+                        default='None',
+                        help="email of person running this analysis",
+                        metavar="STR")
+
+    try:
+        options = parser.parse_args()
+    except(Exception):
+        parser.print_help()
+
+    if len(sys.argv) == 1:
+        parser.print_help()
+        sys.exit(1)
+
+    title = "Rhea"
+    subtitle = "RNA-Seq processing pipeline developed by Zavolan Lab"
+    logo_title = 'Rhea'
+    project_type = "Snakemake workflow"
+    analysis_type = "RNA-seq"
+
+    intro_text = options.intro_text
+    custom_logo = options.custom_logo
+    url = options.url
+    author_name = options.author_name
+    author_email = options.author_email
+
+    config_string = f"""---
+
+title: "{title}"
+subtitle: "{subtitle}"
+intro_text: "{intro_text}"
+custom_logo: "{custom_logo}"
+custom_logo_url: "{url}"
+custom_logo_title: "{logo_title}"
+
+report_header_info:
+  - Project Type: "{project_type}"
+  - Analysis Type: "{analysis_type}"
+  - Analysis Author: "{author_name}"
+  - Contact E-mail: "{author_email}"
+
+top_modules:
+
+  - fastqc:
+      path_filters:
+      - "*/*/fastqc/*/*"
+
+  - cutadapt:
+      name: "Cutadapt: adapter removal"
+      path_filters:
+      - "*/*/remove_adapters_cutadapt*.stdout.log"
+
+  - cutadapt:
+      name: "Cutadapt: polyA tails removal"
+      path_filters:
+      - "*/*/remove_polya_cutadapt*.stdout.log"
+
+  - star:
+      path_filters:
+      - "*/*/map_genome/*"
+
+  - alfa:
+      name: "ALFA"
+      anchor: "ALFA"
+      path_filters:
+      - "*/ALFA_plots.concat_mqc.png"
+
+  - TIN_scores:
+      name: "TIN_scores"
+      anchor: "TIN_scores"
+      path_filters:
+      - "*/TIN_scores_boxplot_mqc.png"
+
+  - salmon:
+      path_filters:
+      - "*/*/*.salmon.*/*"
+
+  - kallisto:
+      path_filters:
+      - "*/*/genome_quantification_kallisto*.stderr.log"
+
+fn_clean_exts:
+  - '.fq1'
+  - '.gz'
+  - '.stdout'
+  - '.log'
+  - '.stderr'
+  - '.fastq'
+  - '.bam'
+  - '.bai'
+  - '.pe'
+  - '.se'
+  - '.pseudo'
+  - '.salmon'
+  - '.sam'
+  - 'mqc'
+  - '.png'
+..."""
+
+    with open(options.config, "w") as config:
+        config.write(config_string)
+
+    return
+
+
+if __name__ == '__main__':
+    try:
+        main()
+    except KeyboardInterrupt:
+        sys.stderr.write("User interrupt!")
+        sys.exit(1)