diff --git a/.gitignore b/.gitignore
index 937346fc2d0c4cb131559489e661cee3bdad0575..53dc92e85f1101d5152d785da2ba8c16a1896ec3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -328,6 +328,7 @@ pip-selfcheck.json
 .DS_Store
 runs/.*
 !runs/PUT_YOUR_WORKFLOW_RUN_CONFIGS_HERE
+._*
 ._.DS_Store
 .snakemake/
 logs/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 771bf2b488785040c83a37e005c1b7045da37bbb..44bd02ae57406b24894188e6324d06bd78039825 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,7 +4,7 @@ before_script:
   - apt update && apt install -y gcc
   - conda init bash && source ~/.bashrc && echo $CONDA_DEFAULT_ENV
   - conda env create -f install/environment.root.yml
-  - conda activate rhea && echo $CONDA_DEFAULT_ENV
+  - conda activate zarp && echo $CONDA_DEFAULT_ENV
   - conda env update -f install/environment.dev.yml
 
 test:
@@ -12,11 +12,12 @@ test:
     # add code quality tests here
     # add unit tests here
     # add script tests here
-    - bash tests/test_scripts_labkey_to_snakemake_table/test.sh
-    - bash tests/test_scripts_labkey_to_snakemake_api/test.sh
+    - bash tests/test_scripts_prepare_inputs_table/test.sh
+    - bash tests/test_scripts_prepare_inputs_labkey/test.sh
     - bash tests/test_alfa/test.sh
     # add integration tests here
     - bash tests/test_create_dag_image/test.sh
     - bash tests/test_create_rule_graph/test.sh
     - bash tests/test_integration_workflow/test.local.sh
+    - bash tests/test_integration_workflow_multiple_lanes/test.local.sh
 
diff --git a/README.md b/README.md
index c53835a9eecd64cf88ab5b14cc940b90bbcf1ca6..628833d3d860c6bd9341d94278770446c7631cb0 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,20 @@
-# Rhea pipeline
+# ZARP
 
-[Snakemake][snakemake] workflow for general purpose RNA-Seq library annotation
-developed by the [Zavolan lab][zavolan-lab].
+[Snakemake][snakemake] workflow that covers common steps of short read RNA-Seq 
+library analysis developed by the [Zavolan lab][zavolan-lab].
 
-Reads are processed, aligned, quantified and analyzed with state-of-the-art
-tools to give meaningful initial insights into various aspects of an RNA-Seq
-library while cutting down on hands-on time for bioinformaticians.
+Reads are analyzed (pre-processed, aligned, quantified) with state-of-the-art
+tools to give meaningful initial insights into the quality and composition 
+of an RNA-Seq library, reducing hands-on time for bioinformaticians and giving
+experimentalists the possibility to rapidly assess their data.
 
-Below is a schematic representation of the individual workflow steps ("pe"
-refers to "paired-end"):
+Below is a schematic representation of the individual steps of the workflow 
+("pe" refers to "paired-end"):
 
 > ![rule_graph][rule-graph]
 
-For a more detailed description of each step, please refer to the [pipeline
-documentation][pipeline-documentation].
+For a more detailed description of each step, please refer to the [workflow
+documentation][workflow-documentation].
 
 ## Requirements
 
@@ -28,12 +29,12 @@ on the following distributions:
 
 ### Cloning the repository
 
-Traverse to the desired path on your file system, then clone the repository and
-move into it with:
+Traverse to the desired directory/folder on your file system, then clone/get the 
+repository and move into the respective directory with:
 
 ```bash
-git clone ssh://git@git.scicore.unibas.ch:2222/zavolan_group/pipelines/rhea.git
-cd rhea
+git clone ssh://git@git.scicore.unibas.ch:2222/zavolan_group/pipelines/zarp.git
+cd zarp
 ```
 
 ### Installing Conda
@@ -49,8 +50,8 @@ Other versions are not guaranteed to work as expected.
 For improved reproducibility and reusability of the workflow,
 each individual step of the workflow runs in its own [Singularity][singularity]
 container. As a consequence, running this workflow has very few
-individual dependencies. It does, however, require Singularity to be installed
-on the system running the workflow. As the functional installation of
+individual dependencies. However, it requires Singularity to be installed
+on the system where the workflow is executed. As the functional installation of
 Singularity requires root privileges, and Conda currently only provides
 Singularity for Linux architectures, the installation instructions are
 slightly different depending on your system/setup:
@@ -90,7 +91,7 @@ conda env create -f install/environment.root.yml
 Activate the Conda environment with:
 
 ```bash
-conda activate rhea
+conda activate zarp
 ```
 
 ### Installing non-essential dependencies
@@ -105,15 +106,14 @@ conda env update -f install/environment.dev.yml
 
 ## Testing the installation
 
-We have prepared several tests to check the integrity of the workflow, its
-components and non-essential processing scripts. These can be found in
-subdirectories of the `tests/` directory. The most critical of these tests
-lets you execute the entire workflow on a small set of example input files.
-Note that for this and other tests to complete without issues,
-[additional dependencies](#installing-non-essential-dependencies) need to be
-installed.
+We have prepared several tests to check the integrity of the workflow and its
+components. These can be found in subdirectories of the `tests/` directory. 
+The most critical of these tests enable you execute the entire workflow on a 
+set of small example input files. Note that for this and other tests to complete
+successfully, [additional dependencies](#installing-non-essential-dependencies) 
+need to be installed.
 
-### Run workflow on local machine
+### Test workflow on local machine
 
 Execute the following command to run the test workflow on your local machine:
 
@@ -121,7 +121,7 @@ Execute the following command to run the test workflow on your local machine:
 bash tests/test_integration_workflow/test.local.sh
 ```
 
-### Run workflow via Slurm
+### Test workflow via Slurm
 
 Execute the following command to run the test workflow on a
 [Slurm][slurm]-managed high-performance computing (HPC) cluster:
@@ -131,15 +131,15 @@ bash tests/test_integration_workflow/test.slurm.sh
 ```
 
 > **NOTE:** Depending on the configuration of your Slurm installation or if
-> using a different workflow manager, you may need to adapt file `cluster.json`
-> and the arguments to options `--config` and `--cores` in file
+> using a different workload manager, you may need to adapt file `cluster.json`
+> and the arguments to options `--config` and `--cores` in the file
 > `test.slurm.sh`, both located in directory `tests/test_integration_workflow`.
 > Consult the manual of your workload manager as well as the section of the
 > Snakemake manual dealing with [cluster execution].
 
 ## Running the workflow on your own samples
 
-1. Assuming that you are currently inside the repository's root directory,
+1. Assuming that your current directory is the repository's root directory,
 create a directory for your workflow run and traverse inside it with:
 
     ```bash
@@ -156,7 +156,7 @@ configuration files:
     touch cluster.json
     ```
 
-3. Use your editor of choice to manually populate these files with appropriate
+3. Use your editor of choice to populate these files with appropriate
 values. Have a look at the examples in the `tests/` directory to see what the
 files should look like, specifically:
 
@@ -166,7 +166,7 @@ files should look like, specifically:
 
 4. Create a runner script. Pick one of the following choices for either local
 or cluster execution. Before execution of the respective command, you must
-replace the data directory placeholders in the argument to the
+replace the data directory placeholders in the argument of the
 `--singularity-args` option with a comma-separated list of _all_ directories
 containing input data files (samples and any annoation files etc) required for
 your run.
@@ -223,9 +223,11 @@ Our lab stores metadata for sequencing samples in a locally deployed
 programmatic access to the LabKey data table and convert it to the
 corresponding workflow inputs (`samples.tsv` and `config.yaml`), respectively.
 As such, these scripts largely automate step 3. of the above instructions.
-However, as these scripts were specifically for the needs of our lab, they are
-likely not portable or, at least, will require considerable modification for
-other setups (e.g., different LabKey table structure).
+However, as these scripts were written specifically for the needs of our lab, 
+they are likely not directly usable or, at least, will require considerable 
+modification for other setups (e.g., different LabKey table structure).
+Nevertheless, they can serve as an example for interfacing between LabKey and
+your workflow.
 
 > **NOTE:** All of the below steps assume that your current working directory
 > is the repository's root directory.
@@ -254,10 +256,10 @@ replacing the placeholders with the appropriate values (check out the
 help screen with option '--help' for further options and information):
 
     ```bash
-    python scripts/labkey_to_snakemake.py \
+    python scripts/prepare_inputs.py \
         --labkey-domain="my.labkey.service.io"
         --labkey-domain="/my/project/path"
-        --input-to-output-mapping="scripts/labkey_to_snakemake.dict.tsv" \
+        --input-to-output-mapping="scripts/prepare_inputs.dict.tsv" \
         --resources-dir="/path/to/my/genome/resources" \
         --output-table="config/my_run/samples.tsv" \
         --config_file="config/my_run/config.yaml" \
diff --git a/Snakefile b/Snakefile
index 5a8e7ea80e84bc2ad8aebd261277c361e4c28328..275397284f5aa858c69186113ecf0496f29b3e8f 100644
--- a/Snakefile
+++ b/Snakefile
@@ -13,6 +13,15 @@ samples_table = pd.read_csv(
     sep="\t",
 )
 
+
+def get_sample(column_id, search_id=None, search_value=None):
+    if search_id:
+        if search_id == 'index':
+            return str(samples_table[column_id][samples_table.index == search_value][0])
+        else:
+            return str(samples_table[column_id][samples_table[search_id] == search_value][0])
+    else:
+        return str(samples_table[column_id][0])
 # Global config
 localrules: start, finish, rename_star_rpm_for_alfa, prepare_multiqc_config
 
@@ -45,10 +54,9 @@ rule finish:
                 "bigWig",
                 "{unique_type}",
                 "{sample}_{unique_type}_{strand}.bw"),
-            sample=samples_table.index.values,
+            sample=pd.unique(samples_table.index.values),
             strand=["plus", "minus"],
             unique_type=["Unique", "UniqueMultiple"]),
-
         salmon_merge_genes = expand(
             os.path.join(
                 config["output_dir"],
@@ -56,7 +64,6 @@ rule finish:
                 "quantmerge",
                 "genes_{salmon_merge_on}.tsv"),
             salmon_merge_on=["tpm", "numreads"]),
-
         salmon_merge_transcripts = expand(
             os.path.join(
                 config["output_dir"],
@@ -64,6 +71,14 @@ rule finish:
                 "quantmerge",
                 "transcripts_{salmon_merge_on}.tsv"),
             salmon_merge_on=["tpm", "numreads"]),
+        kallisto_merge_transcripts = os.path.join(
+            config["output_dir"],
+            "summary_kallisto",
+            "transcripts_tpm.tsv"),
+        kallisto_merge_genes = os.path.join(
+            config["output_dir"],
+            "summary_kallisto",
+            "genes_tpm.tsv")
 
 
 rule start:
@@ -72,7 +87,10 @@ rule start:
     '''
     input:
         reads = lambda wildcards:
-            samples_table.loc[wildcards.sample, wildcards.mate],
+            expand(
+                pd.Series(
+                    samples_table.loc[wildcards.sample, wildcards.mate]
+                ).values)
 
     output:
         reads = os.path.join(
@@ -98,7 +116,7 @@ rule start:
         "docker://bash:5.0.16"
 
     shell:
-        "(cp {input.reads} {output.reads}) \
+        "(cat {input.reads} > {output.reads}) \
         1> {log.stdout} 2> {log.stderr} "
 
 
@@ -152,13 +170,16 @@ rule create_index_star:
     """
     input:
         genome = lambda wildcards:
-            samples_table['genome']
-            [samples_table['organism'] == wildcards.organism]
-            [0],
+            get_sample(
+                'genome',
+                search_id='organism',
+                search_value=wildcards.organism),
+
         gtf = lambda wildcards:
-            samples_table['gtf']
-            [samples_table['organism'] == wildcards.organism]
-            [0]
+            get_sample(
+                'gtf',
+                search_id='organism',
+                search_value=wildcards.organism)
 
     output:
         chromosome_info = os.path.join(
@@ -220,12 +241,15 @@ rule extract_transcriptome:
     """
     input:
         genome = lambda wildcards:
-            samples_table['genome'][
-                samples_table['organism'] == wildcards.organism][0],
+            get_sample(
+                'genome',
+                search_id='organism',
+                search_value=wildcards.organism),
         gtf = lambda wildcards:
-            samples_table['gtf'][
-                samples_table['organism'] == wildcards.organism][0]
-
+            get_sample(
+                'gtf',
+                search_id='organism',
+                search_value=wildcards.organism)
     output:
         transcriptome = os.path.join(
             config['output_dir'],
@@ -263,9 +287,10 @@ rule concatenate_transcriptome_and_genome:
             "transcriptome.fa"),
 
         genome = lambda wildcards:
-            samples_table['genome']
-            [samples_table['organism'] == wildcards.organism]
-            [0]
+            get_sample(
+                'genome',
+                search_id='organism',
+                search_value=wildcards.organism)
 
     output:
         genome_transcriptome = os.path.join(
@@ -301,8 +326,8 @@ rule create_index_salmon:
         chr_names = lambda wildcards:
             os.path.join(
                 config['star_indexes'],
-                samples_table["organism"][0],
-                str(samples_table["index_size"][0]),
+                get_sample('organism'),
+                get_sample("index_size"),
                 "STAR_index",
                 "chrName.txt")
 
@@ -386,7 +411,7 @@ rule extract_transcripts_as_bed12:
     """
     input:
         gtf = lambda wildcards:
-            samples_table['gtf'][0]
+            get_sample('gtf')
 
     output:
         bed12 = os.path.join(
@@ -394,20 +419,24 @@ rule extract_transcripts_as_bed12:
             "full_transcripts_protein_coding.bed")
 
     singularity:
-        "docker://zavolab/gtf_transcript_type_to_bed12:0.1.0-slim"
+        "docker://zavolab/zgtf:0.1"
 
     threads: 1
 
     log:
+        stdout = os.path.join(
+            config['log_dir'],
+            "extract_transcripts_as_bed12.stdout.log"),
         stderr = os.path.join(
             config['log_dir'],
             "extract_transcripts_as_bed12.stderr.log")
 
     shell:
-        "(gtf_transcript_type_to_bed12.pl \
-        --anno={input.gtf} \
-        --type=protein_coding > {output.bed12}); \
-        2> {log.stderr}"
+        "(gtf2bed12 \
+        --gtf {input.gtf} \
+        --transcript_type protein_coding \
+        --bed12 {output.bed12}); \
+        1> {log.stdout} 2> {log.stderr}"
 
 
 rule index_genomic_alignment_samtools:
@@ -465,7 +494,10 @@ rule calculate_TIN_scores:
                     "map_genome",
                     "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam"),
                 sample=wildcards.sample,
-                seqmode=samples_table.loc[wildcards.sample, 'seqmode']),
+                seqmode=get_sample(
+                    'seqmode',
+                    search_id='index',
+                    search_value=wildcards.sample)),
         bai = lambda wildcards:
             expand(
                 os.path.join(
@@ -475,7 +507,10 @@ rule calculate_TIN_scores:
                     "map_genome",
                     "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam.bai"),
                 sample=wildcards.sample,
-                seqmode=samples_table.loc[wildcards.sample, 'seqmode']),
+                seqmode=get_sample(
+                    'seqmode',
+                    search_id='index',
+                    search_value=wildcards.sample)),
         transcripts_bed12 = os.path.join(
             config['output_dir'],
             "full_transcripts_protein_coding.bed")
@@ -524,7 +559,7 @@ rule merge_TIN_scores:
                 "{sample}",
                 "TIN",
                 "TIN_score.tsv"),
-            sample=samples_table.index.values),
+            sample=pd.unique(samples_table.index.values)),
 
     output:
         TIN_scores_merged = os.path.join(
@@ -548,9 +583,10 @@ rule merge_TIN_scores:
                 "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=[i for i in pd.unique(samples_table.index.values)],
+            seqmode=[get_sample('seqmode',
+                    search_id='index',
+                    search_value=i) for i in pd.unique(samples_table.index.values)]))
 
     threads: 1
 
@@ -619,9 +655,12 @@ rule salmon_quantmerge_genes:
                 "{sample}.salmon.{seqmode}",
                 "quant.sf"),
             zip,
-            sample=samples_table.index.values,
-            seqmode=[samples_table.loc[i, 'seqmode']
-                     for i in list(samples_table.index.values)])
+            sample=pd.unique(samples_table.index.values),
+            seqmode=[get_sample(
+                'seqmode',
+                search_id='index',
+                search_value=i)
+                for i in pd.unique(samples_table.index.values)])
 
     output:
         salmon_out = os.path.join(
@@ -638,12 +677,15 @@ rule salmon_quantmerge_genes:
                 "{sample}",
                 "{sample}.salmon.{seqmode}"),
             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=[i for i in pd.unique(samples_table.index.values)],
+            seqmode=[get_sample(
+                'seqmode',
+                search_id='index',
+                search_value=i)
+                for i in pd.unique(samples_table.index.values)]),
         sample_name_list = expand(
             "{sample}",
-            sample=list(samples_table.index.values)),
+            sample=pd.unique(samples_table.index.values)),
         salmon_merge_on = "{salmon_merge_on}"
 
     log:
@@ -671,7 +713,7 @@ rule salmon_quantmerge_genes:
 
 rule salmon_quantmerge_transcripts:
     '''
-        Merge gene quantifications into a single file
+        Merge transcript quantifications into a single file
     '''
     input:
         salmon_in = expand(
@@ -682,9 +724,12 @@ rule salmon_quantmerge_transcripts:
                 "{sample}.salmon.{seqmode}",
                 "quant.sf"),
             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=[i for i in pd.unique(samples_table.index.values)],
+            seqmode=[get_sample(
+                'seqmode',
+                search_id='index',
+                search_value=i)
+                for i in pd.unique(samples_table.index.values)])
 
     output:
         salmon_out = os.path.join(
@@ -701,13 +746,16 @@ rule salmon_quantmerge_transcripts:
                 "{sample}",
                 "{sample}.salmon.{seqmode}"),
             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=[i for i in pd.unique(samples_table.index.values)],
+            seqmode=[get_sample(
+                'seqmode',
+                search_id='index',
+                search_value=i)
+                for i in pd.unique(samples_table.index.values)]),
 
         sample_name_list = expand(
             "{sample}",
-            sample=list(samples_table.index.values)),
+            sample=pd.unique(samples_table.index.values)),
         salmon_merge_on = "{salmon_merge_on}"
 
     log:
@@ -732,6 +780,137 @@ rule salmon_quantmerge_transcripts:
         1> {log.stdout} 2> {log.stderr}"
 
 
+rule kallisto_merge_genes:
+    '''
+        Merge gene quantifications into single file
+    '''
+    input:
+        pseudoalignment = expand(
+            os.path.join(
+                config["output_dir"],
+                "samples",
+                "{sample}",
+                "quant_kallisto",
+                "{sample}.{seqmode}.kallisto.pseudo.sam"),
+            zip,
+            sample=[i for i in pd.unique(samples_table.index.values)],
+            seqmode=[get_sample(
+                'seqmode',
+                search_id='index',
+                search_value=i)
+                for i in pd.unique(samples_table.index.values)]),
+        gtf = get_sample('gtf')
+
+    output:
+        gn_out = os.path.join(
+            config["output_dir"],
+            "summary_kallisto",
+            "genes_tpm.tsv")
+
+    params:
+        dir_out = os.path.join(
+            config["output_dir"],
+            "summary_kallisto"),
+        tables = ','.join(expand(
+            os.path.join(
+                config["output_dir"],
+                "samples",
+                "{sample}",
+                "quant_kallisto",
+                "abundance.h5"),
+            sample=[i for i in pd.unique(samples_table.index.values)])),
+        sample_name_list = ','.join(expand(
+            "{sample}",
+            sample=pd.unique(samples_table.index.values))),
+
+    log:
+        stderr = os.path.join(
+            config["log_dir"],
+            "kallisto_merge_genes.stderr.log"),
+        stdout = os.path.join(
+            config["log_dir"],
+            "kallisto_merge_genes.stdout.log")
+
+    threads: 1
+
+    singularity:
+        "docker://zavolab/merge_kallisto:0.6"
+
+    shell:
+        "(merge_kallisto.R \
+        --input {params.tables} \
+        --names {params.sample_name_list} \
+        --txOut FALSE \
+        --anno {input.gtf} \
+        --output {params.dir_out} \
+        --verbose) \
+        1> {log.stdout} 2> {log.stderr}"
+
+
+rule kallisto_merge_transcripts:
+    '''
+        Merge transcript quantifications into a single files
+    '''
+    input:
+        pseudoalignment = expand(
+            os.path.join(
+                config["output_dir"],
+                "samples",
+                "{sample}",
+                "quant_kallisto",
+                "{sample}.{seqmode}.kallisto.pseudo.sam"),
+            zip,
+            sample=[i for i in pd.unique(samples_table.index.values)],
+            seqmode=[get_sample(
+                'seqmode',
+                search_id='index',
+                search_value=i)
+                for i in pd.unique(samples_table.index.values)]),
+
+    output:
+        tx_out = os.path.join(
+            config["output_dir"],
+            "summary_kallisto",
+            "transcripts_tpm.tsv")
+
+    params:
+        dir_out = os.path.join(
+            config["output_dir"],
+            "summary_kallisto"),
+        tables = ','.join(expand(
+            os.path.join(
+                config["output_dir"],
+                "samples",
+                "{sample}",
+                "quant_kallisto",
+                "abundance.h5"),
+            sample=[i for i in pd.unique(samples_table.index.values)])),
+        sample_name_list = ','.join(expand(
+            "{sample}",
+            sample=pd.unique(samples_table.index.values))),
+
+    log:
+        stderr = os.path.join(
+            config["log_dir"],
+            "kallisto_merge_transcripts.stderr.log"),
+        stdout = os.path.join(
+            config["log_dir"],
+            "kallisto_merge_transcripts.stdout.log")
+
+    threads: 1
+
+    singularity:
+        "docker://zavolab/merge_kallisto:0.6"
+
+    shell:
+        "(merge_kallisto.R \
+        --input {params.tables} \
+        --names {params.sample_name_list} \
+        --output {params.dir_out} \
+        --verbose) \
+        1> {log.stdout} 2> {log.stderr}"
+
+
 rule star_rpm:
     '''
         Create stranded bedgraph coverage with STARs RPM normalisation
@@ -746,7 +925,10 @@ rule star_rpm:
                     "map_genome",
                     "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam"),
                 sample=wildcards.sample,
-                seqmode=samples_table.loc[wildcards.sample, 'seqmode']),
+                seqmode=get_sample(
+                    'seqmode',
+                    search_id='index',
+                    search_value=wildcards.sample)),
         bai = lambda wildcards:
             expand(
                 os.path.join(
@@ -756,7 +938,10 @@ rule star_rpm:
                     "map_genome",
                     "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam.bai"),
                 sample=wildcards.sample,
-                seqmode=samples_table.loc[wildcards.sample, 'seqmode']),
+                seqmode=get_sample(
+                    'seqmode',
+                    search_id='index',
+                    search_value=wildcards.sample))
 
     output:
         str1 = os.path.join(
@@ -836,8 +1021,10 @@ rule rename_star_rpm_for_alfa:
                     "{sample}_Signal.{unique}.{plus}.out.bg"),
                 sample=wildcards.sample,
                 unique=wildcards.unique,
-                plus=samples_table.loc[wildcards.sample, 'alfa_plus']),
-
+                plus=get_sample(
+                    'alfa_plus',
+                    search_id='index',
+                    search_value=wildcards.sample)),
         minus = lambda wildcards:
             expand(
                 os.path.join(
@@ -848,7 +1035,10 @@ rule rename_star_rpm_for_alfa:
                     "{sample}_Signal.{unique}.{minus}.out.bg"),
                 sample=wildcards.sample,
                 unique=wildcards.unique,
-                minus=samples_table.loc[wildcards.sample, 'alfa_minus'])
+                minus=get_sample(
+                    'alfa_minus',
+                    search_id='index',
+                    search_value=wildcards.sample))
 
     output:
         plus = os.path.join(
@@ -868,7 +1058,10 @@ rule rename_star_rpm_for_alfa:
 
     params:
         orientation = lambda wildcards:
-            samples_table.loc[wildcards.sample, "kallisto_directionality"]
+            get_sample(
+                'kallisto_directionality',
+                search_id='index',
+                search_value=wildcards.sample),
 
     log:
         stderr = os.path.join(
@@ -895,8 +1088,11 @@ 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],
+            get_sample(
+                'gtf',
+                search_id='organism',
+                search_value=wildcards.organism),
+
         chr_len = os.path.join(
             config["star_indexes"],
             "{organism}",
@@ -963,8 +1159,14 @@ rule alfa_qc:
         gtf = lambda wildcards:
             os.path.join(
                 config["alfa_indexes"],
-                samples_table.loc[wildcards.sample, "organism"],
-                str(samples_table.loc[wildcards.sample, "index_size"]),
+                get_sample(
+                    'organism',
+                    search_id='index',
+                    search_value=wildcards.sample),
+                get_sample(
+                    'index_size',
+                    search_id='index',
+                    search_value=wildcards.sample),
                 "ALFA",
                 "sorted_genes.stranded.ALFA_index")
 
@@ -999,8 +1201,10 @@ rule alfa_qc:
         minus = lambda wildcards, input:
             os.path.basename(input.minus),
         alfa_orientation = lambda wildcards:
-            [samples_table.loc[
-                wildcards.sample, "alfa_directionality"]],
+            get_sample(
+                'alfa_directionality',
+                search_id='index',
+                search_value=wildcards.sample),
         genome_index = lambda wildcards, input:
             os.path.abspath(
                 os.path.join(
@@ -1041,7 +1245,7 @@ rule alfa_qc_all_samples:
                     "ALFA",
                     "{unique}",
                     "{sample}.ALFA_feature_counts.tsv"),
-                sample=samples_table.index.values,
+                sample=pd.unique(samples_table.index.values),
                 unique=wildcards.unique)
     output:
         biotypes = os.path.join(
@@ -1113,7 +1317,7 @@ rule prepare_multiqc_config:
             workflow.basedir,
             "workflow",
             "scripts",
-            "rhea_multiqc_config.py")
+            "zarp_multiqc_config.py")
 
     output:
         multiqc_config = os.path.join(
@@ -1154,7 +1358,7 @@ rule multiqc_report:
                 "{sample}",
                 "fastqc",
                 "{mate}"),
-            sample=samples_table.index.values,
+            sample=pd.unique(samples_table.index.values),
             mate="fq1"),
 
         fastqc_pe = expand(
@@ -1164,7 +1368,7 @@ rule multiqc_report:
                 "{sample}",
                 "fastqc",
                 "{mate}"),
-            sample=[i for i in list(
+            sample=[i for i in pd.unique(
                 samples_table[samples_table['seqmode'] == 'pe'].index.values)],
             mate="fq2"),
 
@@ -1176,9 +1380,9 @@ rule multiqc_report:
                 "quant_kallisto",
                 "{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)]),
+            sample=[i for i in pd.unique(samples_table.index.values)],
+            seqmode=[get_sample('seqmode', search_id='index', search_value=i) 
+                for i in pd.unique(samples_table.index.values)]),
 
         TIN_boxplot_PNG = os.path.join(
             config['output_dir'],
@@ -1280,8 +1484,14 @@ rule prepare_bigWig:
         chr_sizes = lambda wildcards:
             os.path.join(
                 config['star_indexes'],
-                samples_table.loc[wildcards.sample, "organism"],
-                str(samples_table.loc[wildcards.sample, "index_size"]),
+                get_sample(
+                    'organism',
+                    search_id='index',
+                    search_value=wildcards.sample),
+                get_sample(
+                    'index_size',
+                    search_id='index',
+                    search_value=wildcards.sample),
                 "STAR_index",
                 "chrNameLength.txt")
 
diff --git a/images/dag_test_workflow.svg b/images/dag_test_workflow.svg
index bcd33c59a2fcd4207c367689aabad56363167b41..2a883aeb204a3d2a52c4b9735d7fe47c24852e51 100644
--- a/images/dag_test_workflow.svg
+++ b/images/dag_test_workflow.svg
@@ -12,13 +12,13 @@
 <!-- 0 -->
 <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"/>
+<path fill="none" stroke="#97d856" 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="#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"/>
+<path fill="none" stroke="#d6d856" 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 -->
@@ -30,7 +30,7 @@
 <!-- 2 -->
 <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"/>
+<path fill="none" stroke="#56d88a" 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;0 -->
@@ -42,7 +42,7 @@
 <!-- 3 -->
 <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"/>
+<path fill="none" stroke="#56d88a" 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;0 -->
@@ -54,7 +54,7 @@
 <!-- 4 -->
 <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"/>
+<path fill="none" stroke="#56d88a" 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;0 -->
@@ -66,7 +66,7 @@
 <!-- 5 -->
 <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"/>
+<path fill="none" stroke="#56d88a" 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;0 -->
@@ -78,7 +78,7 @@
 <!-- 6 -->
 <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"/>
+<path fill="none" stroke="#56d88a" 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;0 -->
@@ -90,7 +90,7 @@
 <!-- 7 -->
 <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"/>
+<path fill="none" stroke="#56d88a" 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;0 -->
@@ -102,7 +102,7 @@
 <!-- 8 -->
 <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"/>
+<path fill="none" stroke="#56d88a" 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;0 -->
@@ -114,7 +114,7 @@
 <!-- 9 -->
 <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"/>
+<path fill="none" stroke="#56d88a" 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;0 -->
@@ -126,7 +126,7 @@
 <!-- 10 -->
 <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"/>
+<path fill="none" stroke="#56d8a9" 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>
@@ -139,7 +139,7 @@
 <!-- 11 -->
 <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"/>
+<path fill="none" stroke="#56d8a9" 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>
@@ -152,7 +152,7 @@
 <!-- 12 -->
 <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"/>
+<path fill="none" stroke="#d85656" 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>
@@ -165,7 +165,7 @@
 <!-- 13 -->
 <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"/>
+<path fill="none" stroke="#d85656" 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>
@@ -178,7 +178,7 @@
 <!-- 14 -->
 <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"/>
+<path fill="none" stroke="#a7d856" 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;1 -->
@@ -190,7 +190,7 @@
 <!-- 15 -->
 <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"/>
+<path fill="none" stroke="#a7d856" 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;1 -->
@@ -202,7 +202,7 @@
 <!-- 16 -->
 <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"/>
+<path fill="none" stroke="#a7d856" 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>
 <!-- 16&#45;&gt;1 -->
@@ -214,7 +214,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56d0d8" 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>
 <!-- 17&#45;&gt;1 -->
@@ -226,7 +226,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#c6d856" 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>
 <!-- 18&#45;&gt;1 -->
@@ -238,7 +238,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56d8c9" 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>
 <!-- 19&#45;&gt;1 -->
@@ -250,7 +250,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#5682d8" 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>
 <!-- 20&#45;&gt;1 -->
@@ -262,7 +262,7 @@
 <!-- 21 -->
 <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"/>
+<path fill="none" stroke="#d88556" 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>
 <!-- 21&#45;&gt;1 -->
@@ -274,7 +274,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56d87b" 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>
@@ -287,7 +287,7 @@
 <!-- 23 -->
 <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"/>
+<path fill="none" stroke="#88d856" 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>
@@ -343,7 +343,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d8a456" 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>
@@ -356,7 +356,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#61d856" 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 -->
@@ -368,7 +368,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#5673d8" 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 -->
@@ -380,7 +380,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56b1d8" 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 -->
@@ -392,7 +392,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56d87b" 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>
@@ -405,7 +405,7 @@
 <!-- 25 -->
 <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"/>
+<path fill="none" stroke="#56d87b" 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>
@@ -418,7 +418,7 @@
 <!-- 26 -->
 <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"/>
+<path fill="none" stroke="#56d87b" 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>
@@ -431,7 +431,7 @@
 <!-- 27 -->
 <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"/>
+<path fill="none" stroke="#56d87b" 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>
@@ -444,7 +444,7 @@
 <!-- 28 -->
 <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"/>
+<path fill="none" stroke="#56d87b" 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>
@@ -457,7 +457,7 @@
 <!-- 29 -->
 <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"/>
+<path fill="none" stroke="#56d87b" 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>
@@ -470,7 +470,7 @@
 <!-- 30 -->
 <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"/>
+<path fill="none" stroke="#56d87b" 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>
@@ -483,7 +483,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#78d856" 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 -->
@@ -513,7 +513,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56d8b9" 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 -->
@@ -543,7 +543,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56c1d8" 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>
@@ -557,7 +557,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56d89a" 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 -->
@@ -569,7 +569,7 @@
 <!-- 34 -->
 <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"/>
+<path fill="none" stroke="#56c1d8" 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>
@@ -583,7 +583,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#70d856" 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 -->
@@ -595,7 +595,7 @@
 <!-- 35 -->
 <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"/>
+<path fill="none" stroke="#56c1d8" 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>
@@ -615,7 +615,7 @@
 <!-- 36 -->
 <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"/>
+<path fill="none" stroke="#56d86b" 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 -->
@@ -639,7 +639,7 @@
 <!-- 37 -->
 <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"/>
+<path fill="none" stroke="#56d85b" 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 -->
@@ -657,7 +657,7 @@
 <!-- 38 -->
 <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"/>
+<path fill="none" stroke="#d8cb56" 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 -->
@@ -681,7 +681,7 @@
 <!-- 39 -->
 <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"/>
+<path fill="none" stroke="#b6d856" 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;19 -->
@@ -693,7 +693,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d89556" 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;20 -->
@@ -705,7 +705,7 @@
 <!-- 41 -->
 <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"/>
+<path fill="none" stroke="#d89556" 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 -->
@@ -717,7 +717,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#5663d8" 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>
@@ -736,7 +736,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d8ac56" 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 -->
@@ -748,7 +748,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#5663d8" 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>
@@ -767,7 +767,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d8ac56" 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 -->
@@ -779,7 +779,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#5663d8" 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>
@@ -798,7 +798,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d8ac56" 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 -->
@@ -810,7 +810,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#5663d8" 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>
@@ -829,7 +829,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d8ac56" 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 -->
@@ -859,7 +859,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56a2d8" 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>
@@ -890,7 +890,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d86656" 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 -->
@@ -902,7 +902,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d86656" 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 -->
@@ -938,7 +938,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56d8d8" 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 -->
@@ -956,7 +956,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#56d8d8" 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 -->
@@ -992,7 +992,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d8bc56" 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>
@@ -1017,7 +1017,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d87556" 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 -->
@@ -1047,7 +1047,7 @@
 <!-- 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"/>
+<path fill="none" stroke="#d8bc56" 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>
diff --git a/images/rule_graph.svg b/images/rule_graph.svg
index 79aa7491895e5db0636051a228a40e58c7a6d062..3cb5d62265295574e6b130bf12683c9e82cdd434 100644
--- a/images/rule_graph.svg
+++ b/images/rule_graph.svg
@@ -4,550 +4,598 @@
 <!-- Generated by graphviz version 2.40.1 (20161225.0304)
  -->
 <!-- Title: snakemake_dag Pages: 1 -->
-<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">
+<svg width="1237pt" height="836pt"
+ viewBox="0.00 0.00 1237.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="#ffffff" stroke="transparent" points="-4,4 -4,-832 1141,-832 1141,4 -4,4"/>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-832 1233,-832 1233,4 -4,4"/>
 <!-- 0 -->
 <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>
+<path fill="none" stroke="#ced856" stroke-width="2" d="M483,-36C483,-36 453,-36 453,-36 447,-36 441,-30 441,-24 441,-24 441,-12 441,-12 441,-6 447,0 453,0 453,0 483,0 483,0 489,0 495,-6 495,-12 495,-12 495,-24 495,-24 495,-30 489,-36 483,-36"/>
+<text text-anchor="middle" x="468" 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="#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>
+<path fill="none" stroke="#d8ac56" stroke-width="2" d="M776,-108C776,-108 712,-108 712,-108 706,-108 700,-102 700,-96 700,-96 700,-84 700,-84 700,-78 706,-72 712,-72 712,-72 776,-72 776,-72 782,-72 788,-78 788,-84 788,-84 788,-96 788,-96 788,-102 782,-108 776,-108"/>
+<text text-anchor="middle" x="744" 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">
+<g id="edge4" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M699.9618,-78.5118C645.9987,-64.4344 555.5307,-40.8341 504.9989,-27.6519"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="505.7083,-24.2199 495.1486,-25.0822 503.9413,-30.9932 505.7083,-24.2199"/>
 </g>
 <!-- 2 -->
 <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>
+<path fill="none" stroke="#56c9d8" stroke-width="2" d="M1144.5,-252C1144.5,-252 1075.5,-252 1075.5,-252 1069.5,-252 1063.5,-246 1063.5,-240 1063.5,-240 1063.5,-228 1063.5,-228 1063.5,-222 1069.5,-216 1075.5,-216 1075.5,-216 1144.5,-216 1144.5,-216 1150.5,-216 1156.5,-222 1156.5,-228 1156.5,-228 1156.5,-240 1156.5,-240 1156.5,-246 1150.5,-252 1144.5,-252"/>
+<text text-anchor="middle" x="1110" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">prepare_bigWig</text>
 </g>
 <!-- 2&#45;&gt;0 -->
-<g id="edge3" class="edge">
+<g id="edge1" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1089.1753,-215.8325C1065.8056,-196.1369 1026.1528,-164.7459 988,-144 822.9295,-54.2416 594.0667,-27.662 505.2806,-20.4592"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="505.402,-16.9582 495.1611,-19.6739 504.8603,-23.9372 505.402,-16.9582"/>
 </g>
 <!-- 3 -->
 <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>
+<path fill="none" stroke="#56b9d8" stroke-width="2" d="M140,-468C140,-468 12,-468 12,-468 6,-468 0,-462 0,-456 0,-456 0,-444 0,-444 0,-438 6,-432 12,-432 12,-432 140,-432 140,-432 146,-432 152,-438 152,-444 152,-444 152,-456 152,-456 152,-462 146,-468 140,-468"/>
+<text text-anchor="middle" x="76" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_genes</text>
 </g>
 <!-- 3&#45;&gt;0 -->
-<g id="edge4" class="edge">
+<g id="edge2" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M91.9791,-431.898C113.1909,-405.9361 148,-355.7525 148,-306 148,-306 148,-306 148,-162 148,-92.8193 212.5468,-101.7585 275,-72 326.433,-47.4925 391.0317,-32.2436 430.9109,-24.4358"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="431.5693,-27.8734 440.7382,-22.5648 430.2601,-20.9969 431.5693,-27.8734"/>
 </g>
 <!-- 4 -->
 <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>
+<path fill="none" stroke="#56d892" stroke-width="2" d="M332,-468C332,-468 182,-468 182,-468 176,-468 170,-462 170,-456 170,-456 170,-444 170,-444 170,-438 176,-432 182,-432 182,-432 332,-432 332,-432 338,-432 344,-438 344,-444 344,-444 344,-456 344,-456 344,-462 338,-468 332,-468"/>
+<text text-anchor="middle" x="257" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_transcripts</text>
 </g>
 <!-- 4&#45;&gt;0 -->
-<g id="edge2" class="edge">
+<g id="edge3" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M257,-431.8146C257,-404.4983 257,-351.25 257,-306 257,-306 257,-306 257,-162 257,-78.7801 370.3638,-40.1916 430.9031,-25.5175"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="431.8991,-28.8794 440.8474,-23.2069 430.3147,-22.0611 431.8991,-28.8794"/>
 </g>
 <!-- 5 -->
 <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>
+<path fill="none" stroke="#56d8c1" stroke-width="2" d="M606,-108C606,-108 484,-108 484,-108 478,-108 472,-102 472,-96 472,-96 472,-84 472,-84 472,-78 478,-72 484,-72 484,-72 606,-72 606,-72 612,-72 618,-78 618,-84 618,-84 618,-96 618,-96 618,-102 612,-108 606,-108"/>
+<text text-anchor="middle" x="545" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">kallisto_merge_transcripts</text>
 </g>
-<!-- 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"/>
+<!-- 5&#45;&gt;0 -->
+<g id="edge5" class="edge">
+<title>5&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M525.5696,-71.8314C516.268,-63.1337 504.9796,-52.5783 494.8714,-43.1265"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="497.1189,-40.4363 487.4241,-36.1628 492.3379,-45.5493 497.1189,-40.4363"/>
 </g>
 <!-- 6 -->
 <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>
+<path fill="none" stroke="#68d856" stroke-width="2" d="M442,-108C442,-108 342,-108 342,-108 336,-108 330,-102 330,-96 330,-96 330,-84 330,-84 330,-78 336,-72 342,-72 342,-72 442,-72 442,-72 448,-72 454,-78 454,-84 454,-84 454,-96 454,-96 454,-102 448,-108 442,-108"/>
+<text text-anchor="middle" x="392" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">kallisto_merge_genes</text>
 </g>
-<!-- 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"/>
+<!-- 6&#45;&gt;0 -->
+<g id="edge6" class="edge">
+<title>6&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M411.178,-71.8314C420.3588,-63.1337 431.5006,-52.5783 441.4776,-43.1265"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="443.9757,-45.5811 448.8281,-36.1628 439.1615,-40.4995 443.9757,-45.5811"/>
 </g>
 <!-- 7 -->
 <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>
+<path fill="none" stroke="#56d88a" stroke-width="2" d="M1217,-396C1217,-396 1187,-396 1187,-396 1181,-396 1175,-390 1175,-384 1175,-384 1175,-372 1175,-372 1175,-366 1181,-360 1187,-360 1187,-360 1217,-360 1217,-360 1223,-360 1229,-366 1229,-372 1229,-372 1229,-384 1229,-384 1229,-390 1223,-396 1217,-396"/>
+<text text-anchor="middle" x="1202" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">fastqc</text>
 </g>
 <!-- 7&#45;&gt;1 -->
-<g id="edge9" class="edge">
+<g id="edge10" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1203.1008,-359.8379C1204.0828,-327.1418 1201.4647,-257.8883 1166,-216 1118.1269,-159.4558 900.8972,-116.3139 798.1578,-98.6869"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="798.7303,-95.2341 788.2856,-97.0113 797.5589,-102.1354 798.7303,-95.2341"/>
 </g>
 <!-- 8 -->
 <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>
+<path fill="none" stroke="#bed856" stroke-width="2" d="M648.5,-180C648.5,-180 485.5,-180 485.5,-180 479.5,-180 473.5,-174 473.5,-168 473.5,-168 473.5,-156 473.5,-156 473.5,-150 479.5,-144 485.5,-144 485.5,-144 648.5,-144 648.5,-144 654.5,-144 660.5,-150 660.5,-156 660.5,-156 660.5,-168 660.5,-168 660.5,-174 654.5,-180 648.5,-180"/>
+<text text-anchor="middle" x="567" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">pe_genome_quantification_kallisto</text>
 </g>
 <!-- 8&#45;&gt;1 -->
-<g id="edge6" class="edge">
+<g id="edge8" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M611.6646,-143.8314C635.6385,-134.0792 665.354,-121.9916 690.5493,-111.7427"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="692.0187,-114.9235 699.9629,-107.9134 689.3811,-108.4394 692.0187,-114.9235"/>
+</g>
+<!-- 8&#45;&gt;5 -->
+<g id="edge19" class="edge">
+<title>8&#45;&gt;5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M561.4485,-143.8314C559.0697,-136.0463 556.2362,-126.7729 553.5967,-118.1347"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="556.8958,-116.954 550.6263,-108.4133 550.2013,-118.9996 556.8958,-116.954"/>
+</g>
+<!-- 8&#45;&gt;6 -->
+<g id="edge21" class="edge">
+<title>8&#45;&gt;6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M522.8401,-143.8314C499.2268,-134.1162 469.9798,-122.0831 445.13,-111.8592"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="446.4219,-108.6061 435.8423,-108.038 443.7585,-115.0797 446.4219,-108.6061"/>
 </g>
 <!-- 9 -->
 <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>
+<path fill="none" stroke="#5682d8" stroke-width="2" d="M443,-180C443,-180 297,-180 297,-180 291,-180 285,-174 285,-168 285,-168 285,-156 285,-156 285,-150 291,-144 297,-144 297,-144 443,-144 443,-144 449,-144 455,-150 455,-156 455,-156 455,-168 455,-168 455,-174 449,-180 443,-180"/>
+<text text-anchor="middle" x="370" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">genome_quantification_kallisto</text>
 </g>
 <!-- 9&#45;&gt;1 -->
-<g id="edge7" class="edge">
+<g id="edge12" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M455.3344,-145.572C527.4246,-131.6937 628.4768,-112.2398 689.9122,-100.4126"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="690.6344,-103.838 699.7924,-98.5106 689.311,-96.9642 690.6344,-103.838"/>
+</g>
+<!-- 9&#45;&gt;5 -->
+<g id="edge20" class="edge">
+<title>9&#45;&gt;5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M414.1599,-143.8314C437.7732,-134.1162 467.0202,-122.0831 491.87,-111.8592"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="493.2415,-115.0797 501.1577,-108.038 490.5781,-108.6061 493.2415,-115.0797"/>
+</g>
+<!-- 9&#45;&gt;6 -->
+<g id="edge22" class="edge">
+<title>9&#45;&gt;6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M375.5515,-143.8314C377.9303,-136.0463 380.7638,-126.7729 383.4033,-118.1347"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="386.7987,-118.9996 386.3737,-108.4133 380.1042,-116.954 386.7987,-118.9996"/>
 </g>
 <!-- 10 -->
 <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>
+<path fill="none" stroke="#88d856" stroke-width="2" d="M835,-324C835,-324 765,-324 765,-324 759,-324 753,-318 753,-312 753,-312 753,-300 753,-300 753,-294 759,-288 765,-288 765,-288 835,-288 835,-288 841,-288 847,-294 847,-300 847,-300 847,-312 847,-312 847,-318 841,-324 835,-324"/>
+<text text-anchor="middle" x="800" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">plot_TIN_scores</text>
 </g>
 <!-- 10&#45;&gt;1 -->
-<g id="edge8" class="edge">
+<g id="edge11" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M808.447,-287.8113C821.6472,-256.5398 843.2711,-191.3829 819,-144 812.763,-131.8238 802.3605,-121.7682 791.2593,-113.7713"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="792.9527,-110.6937 782.6914,-108.0563 789.0684,-116.5171 792.9527,-110.6937"/>
 </g>
 <!-- 11 -->
 <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>
+<path fill="none" stroke="#d87556" stroke-width="2" d="M966.5,-180C966.5,-180 879.5,-180 879.5,-180 873.5,-180 867.5,-174 867.5,-168 867.5,-168 867.5,-156 867.5,-156 867.5,-150 873.5,-144 879.5,-144 879.5,-144 966.5,-144 966.5,-144 972.5,-144 978.5,-150 978.5,-156 978.5,-156 978.5,-168 978.5,-168 978.5,-174 972.5,-180 966.5,-180"/>
+<text text-anchor="middle" x="923" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">alfa_concat_results</text>
 </g>
-<!-- 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"/>
+<!-- 11&#45;&gt;1 -->
+<g id="edge7" class="edge">
+<title>11&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M877.8307,-143.8314C853.4941,-134.0423 823.3069,-121.9 797.7653,-111.6263"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="798.8094,-108.2738 788.2257,-107.7891 796.1971,-114.7681 798.8094,-108.2738"/>
 </g>
 <!-- 12 -->
 <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;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>
-<!-- 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>
-<!-- 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>
-<!-- 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>
-<!-- 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>
-<!-- 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>
-<!-- 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>
-<!-- 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>
+<path fill="none" stroke="#56d86b" stroke-width="2" d="M797.5,-180C797.5,-180 690.5,-180 690.5,-180 684.5,-180 678.5,-174 678.5,-168 678.5,-168 678.5,-156 678.5,-156 678.5,-150 684.5,-144 690.5,-144 690.5,-144 797.5,-144 797.5,-144 803.5,-144 809.5,-150 809.5,-156 809.5,-156 809.5,-168 809.5,-168 809.5,-174 803.5,-180 797.5,-180"/>
+<text text-anchor="middle" x="744" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">prepare_multiqc_config</text>
 </g>
-<!-- 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"/>
+<!-- 12&#45;&gt;1 -->
+<g id="edge9" class="edge">
+<title>12&#45;&gt;1</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M744,-143.8314C744,-136.131 744,-126.9743 744,-118.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="747.5001,-118.4132 744,-108.4133 740.5001,-118.4133 747.5001,-118.4132"/>
 </g>
 <!-- 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"/>
+<path fill="none" stroke="#78d856" stroke-width="2" d="M1093,-324C1093,-324 1027,-324 1027,-324 1021,-324 1015,-318 1015,-312 1015,-312 1015,-300 1015,-300 1015,-294 1021,-288 1027,-288 1027,-288 1093,-288 1093,-288 1099,-288 1105,-294 1105,-300 1105,-300 1105,-312 1105,-312 1105,-318 1099,-324 1093,-324"/>
+<text text-anchor="middle" x="1060" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">sort_bed_4_big</text>
 </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"/>
+<!-- 13&#45;&gt;2 -->
+<g id="edge13" class="edge">
+<title>13&#45;&gt;2</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1072.6171,-287.8314C1078.3172,-279.6232 1085.1663,-269.7606 1091.4359,-260.7323"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1094.3838,-262.6234 1097.213,-252.4133 1088.6342,-258.6306 1094.3838,-262.6234"/>
 </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>
+<path fill="none" stroke="#5663d8" stroke-width="2" d="M985,-684C985,-684 905,-684 905,-684 899,-684 893,-678 893,-672 893,-672 893,-660 893,-660 893,-654 899,-648 905,-648 905,-648 985,-648 985,-648 991,-648 997,-654 997,-660 997,-660 997,-672 997,-672 997,-678 991,-684 985,-684"/>
+<text text-anchor="middle" x="945" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">create_index_star</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"/>
+<!-- 14&#45;&gt;2 -->
+<g id="edge14" class="edge">
+<title>14&#45;&gt;2</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M997.02,-653.2739C1056.8712,-635.1562 1147,-595.6465 1147,-522 1147,-522 1147,-522 1147,-378 1147,-336.4385 1132.3628,-290.1923 1121.501,-261.5961"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1124.7492,-260.2919 1117.8467,-252.254 1118.2302,-262.8419 1124.7492,-260.2919"/>
 </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"/>
+<!-- 24 -->
+<g id="node25" class="node">
+<title>24</title>
+<path fill="none" stroke="#569ad8" stroke-width="2" d="M297.5,-612C297.5,-612 200.5,-612 200.5,-612 194.5,-612 188.5,-606 188.5,-600 188.5,-600 188.5,-588 188.5,-588 188.5,-582 194.5,-576 200.5,-576 200.5,-576 297.5,-576 297.5,-576 303.5,-576 309.5,-582 309.5,-588 309.5,-588 309.5,-600 309.5,-600 309.5,-606 303.5,-612 297.5,-612"/>
+<text text-anchor="middle" x="249" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">create_index_salmon</text>
+</g>
+<!-- 14&#45;&gt;24 -->
+<g id="edge42" class="edge">
+<title>14&#45;&gt;24</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M892.9715,-660.6177C769.7407,-647.8697 459.9154,-615.8188 319.7851,-601.3226"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="319.8963,-597.8155 309.5892,-600.2678 319.1759,-604.7783 319.8963,-597.8155"/>
+</g>
+<!-- 32 -->
+<g id="node33" class="node">
+<title>32</title>
+<path fill="none" stroke="#d8bc56" stroke-width="2" d="M995.5,-612C995.5,-612 894.5,-612 894.5,-612 888.5,-612 882.5,-606 882.5,-600 882.5,-600 882.5,-588 882.5,-588 882.5,-582 888.5,-576 894.5,-576 894.5,-576 995.5,-576 995.5,-576 1001.5,-576 1007.5,-582 1007.5,-588 1007.5,-588 1007.5,-600 1007.5,-600 1007.5,-606 1001.5,-612 995.5,-612"/>
+<text text-anchor="middle" x="945" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">pe_map_genome_star</text>
+</g>
+<!-- 14&#45;&gt;32 -->
+<g id="edge56" class="edge">
+<title>14&#45;&gt;32</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M945,-647.8314C945,-640.131 945,-630.9743 945,-622.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="948.5001,-622.4132 945,-612.4133 941.5001,-622.4133 948.5001,-622.4132"/>
+</g>
+<!-- 35 -->
+<g id="node36" class="node">
+<title>35</title>
+<path fill="none" stroke="#56d8d0" stroke-width="2" d="M852.5,-612C852.5,-612 769.5,-612 769.5,-612 763.5,-612 757.5,-606 757.5,-600 757.5,-600 757.5,-588 757.5,-588 757.5,-582 763.5,-576 769.5,-576 769.5,-576 852.5,-576 852.5,-576 858.5,-576 864.5,-582 864.5,-588 864.5,-588 864.5,-600 864.5,-600 864.5,-606 858.5,-612 852.5,-612"/>
+<text text-anchor="middle" x="811" y="-591.5" font-family="sans" font-size="10.00" fill="#000000">map_genome_star</text>
+</g>
+<!-- 14&#45;&gt;35 -->
+<g id="edge60" class="edge">
+<title>14&#45;&gt;35</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M911.1861,-647.8314C893.7293,-638.4516 872.2513,-626.9112 853.6648,-616.9244"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="855.2686,-613.8129 844.803,-612.1628 851.9554,-619.9792 855.2686,-613.8129"/>
+</g>
+<!-- 36 -->
+<g id="node37" class="node">
+<title>36</title>
+<path fill="none" stroke="#56d8b1" stroke-width="2" d="M943,-396C943,-396 851,-396 851,-396 845,-396 839,-390 839,-384 839,-384 839,-372 839,-372 839,-366 845,-360 851,-360 851,-360 943,-360 943,-360 949,-360 955,-366 955,-372 955,-372 955,-384 955,-384 955,-390 949,-396 943,-396"/>
+<text text-anchor="middle" x="897" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">generate_alfa_index</text>
+</g>
+<!-- 14&#45;&gt;36 -->
+<g id="edge61" class="edge">
+<title>14&#45;&gt;36</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M973.2988,-647.8492C987.2857,-638.1424 1003.9233,-625.4374 1017,-612 1054.0212,-573.9578 1079.6148,-555.7965 1068,-504 1060.2568,-469.469 1059.832,-456.1879 1034,-432 1023.1018,-421.7955 993.631,-409.6621 964.8031,-399.4839"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="965.6739,-396.0815 955.0791,-396.1128 963.381,-402.6953 965.6739,-396.0815"/>
 </g>
 <!-- 15 -->
 <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;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"/>
+<path fill="none" stroke="#d8c356" stroke-width="2" d="M324,-540C324,-540 206,-540 206,-540 200,-540 194,-534 194,-528 194,-528 194,-516 194,-516 194,-510 200,-504 206,-504 206,-504 324,-504 324,-504 330,-504 336,-510 336,-516 336,-516 336,-528 336,-528 336,-534 330,-540 324,-540"/>
+<text text-anchor="middle" x="265" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">pe_quantification_salmon</text>
 </g>
-<!-- 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;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>
-<!-- 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>
+<!-- 15&#45;&gt;3 -->
+<g id="edge15" class="edge">
+<title>15&#45;&gt;3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M217.3073,-503.8314C191.6927,-494.0734 159.9398,-481.977 133.026,-471.7242"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="133.9406,-468.3273 123.3497,-468.038 131.4486,-474.8687 133.9406,-468.3273"/>
 </g>
-<!-- 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"/>
+<!-- 15&#45;&gt;4 -->
+<g id="edge17" class="edge">
+<title>15&#45;&gt;4</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M262.9813,-503.8314C262.1257,-496.131 261.1083,-486.9743 260.1574,-478.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="263.6289,-477.9656 259.0459,-468.4133 256.6717,-478.7386 263.6289,-477.9656"/>
 </g>
 <!-- 16 -->
 <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"/>
+<path fill="none" stroke="#5692d8" stroke-width="2" d="M163.5,-540C163.5,-540 62.5,-540 62.5,-540 56.5,-540 50.5,-534 50.5,-528 50.5,-528 50.5,-516 50.5,-516 50.5,-510 56.5,-504 62.5,-504 62.5,-504 163.5,-504 163.5,-504 169.5,-504 175.5,-510 175.5,-516 175.5,-516 175.5,-528 175.5,-528 175.5,-534 169.5,-540 163.5,-540"/>
+<text text-anchor="middle" x="113" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">quantification_salmon</text>
 </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"/>
+<!-- 16&#45;&gt;3 -->
+<g id="edge16" class="edge">
+<title>16&#45;&gt;3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M103.6633,-503.8314C99.5757,-495.8771 94.6896,-486.369 90.1691,-477.5723"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="93.1461,-475.7078 85.4624,-468.4133 86.9201,-478.9074 93.1461,-475.7078"/>
 </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"/>
+<!-- 16&#45;&gt;4 -->
+<g id="edge18" class="edge">
+<title>16&#45;&gt;4</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M149.3373,-503.8314C168.3396,-494.3302 191.7758,-482.6121 211.9252,-472.5374"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="213.545,-475.6407 220.924,-468.038 210.4145,-469.3797 213.545,-475.6407"/>
 </g>
 <!-- 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"/>
+<path fill="none" stroke="#97d856" stroke-width="2" d="M646,-828C646,-828 616,-828 616,-828 610,-828 604,-822 604,-816 604,-816 604,-804 604,-804 604,-798 610,-792 616,-792 616,-792 646,-792 646,-792 652,-792 658,-798 658,-804 658,-804 658,-816 658,-816 658,-822 652,-828 646,-828"/>
+<text text-anchor="middle" x="631" y="-807.5" font-family="sans" font-size="10.00" fill="#000000">start</text>
 </g>
 <!-- 17&#45;&gt;7 -->
-<g id="edge20" class="edge">
+<g id="edge23" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M658.1064,-808.9708C770.368,-803.9871 1193,-777.8007 1193,-666 1193,-666 1193,-666 1193,-522 1193,-481.7977 1196.5375,-435.4047 1199.1768,-406.385"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1202.6864,-406.4457 1200.1352,-396.1626 1195.717,-405.7923 1202.6864,-406.4457"/>
+</g>
+<!-- 25 -->
+<g id="node26" class="node">
+<title>25</title>
+<path fill="none" stroke="#d89c56" stroke-width="2" d="M702.5,-756C702.5,-756 559.5,-756 559.5,-756 553.5,-756 547.5,-750 547.5,-744 547.5,-744 547.5,-732 547.5,-732 547.5,-726 553.5,-720 559.5,-720 559.5,-720 702.5,-720 702.5,-720 708.5,-720 714.5,-726 714.5,-732 714.5,-732 714.5,-744 714.5,-744 714.5,-750 708.5,-756 702.5,-756"/>
+<text text-anchor="middle" x="631" y="-735.5" font-family="sans" font-size="10.00" fill="#000000">pe_remove_adapters_cutadapt</text>
+</g>
+<!-- 17&#45;&gt;25 -->
+<g id="edge43" class="edge">
+<title>17&#45;&gt;25</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M631,-791.8314C631,-784.131 631,-774.9743 631,-766.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="634.5001,-766.4132 631,-756.4133 627.5001,-766.4133 634.5001,-766.4132"/>
+</g>
+<!-- 27 -->
+<g id="node28" class="node">
+<title>27</title>
+<path fill="none" stroke="#56a9d8" stroke-width="2" d="M375,-756C375,-756 249,-756 249,-756 243,-756 237,-750 237,-744 237,-744 237,-732 237,-732 237,-726 243,-720 249,-720 249,-720 375,-720 375,-720 381,-720 387,-726 387,-732 387,-732 387,-744 387,-744 387,-750 381,-756 375,-756"/>
+<text text-anchor="middle" x="312" y="-735.5" font-family="sans" font-size="10.00" fill="#000000">remove_adapters_cutadapt</text>
+</g>
+<!-- 17&#45;&gt;27 -->
+<g id="edge44" class="edge">
+<title>17&#45;&gt;27</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M603.8022,-803.8613C558.5659,-793.6512 466.0433,-772.7684 397.2464,-757.2406"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="397.8018,-753.778 387.2766,-754.9903 396.2606,-760.6062 397.8018,-753.778"/>
 </g>
 <!-- 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>
+<path fill="none" stroke="#d8d356" stroke-width="2" d="M665,-684C665,-684 537,-684 537,-684 531,-684 525,-678 525,-672 525,-672 525,-660 525,-660 525,-654 531,-648 537,-648 537,-648 665,-648 665,-648 671,-648 677,-654 677,-660 677,-660 677,-672 677,-672 677,-678 671,-684 665,-684"/>
+<text text-anchor="middle" x="601" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">pe_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"/>
+<!-- 18&#45;&gt;8 -->
+<g id="edge24" class="edge">
+<title>18&#45;&gt;8</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M595.3306,-647.8704C588.0535,-623.5963 575.7953,-579.0581 571,-540 555.0812,-410.3404 561.499,-253.7868 565.1423,-190.5482"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="568.6583,-190.3842 565.7631,-180.1926 561.6709,-189.9652 568.6583,-190.3842"/>
 </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"/>
+<!-- 18&#45;&gt;15 -->
+<g id="edge31" class="edge">
+<title>18&#45;&gt;15</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M558.7856,-647.9081C497.2161,-621.5212 382.9067,-572.5315 316.4826,-544.064"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="317.6119,-540.7401 307.0417,-540.0179 314.8544,-547.1741 317.6119,-540.7401"/>
 </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"/>
+<!-- 18&#45;&gt;32 -->
+<g id="edge55" class="edge">
+<title>18&#45;&gt;32</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M677.1308,-652.061C729.5514,-642.2029 801.0165,-628.2533 872.2723,-612.3398"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="873.3339,-615.6886 882.3234,-610.0815 871.7994,-608.8589 873.3339,-615.6886"/>
 </g>
 <!-- 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>
+<path fill="none" stroke="#61d856" stroke-width="2" d="M509.5,-252C509.5,-252 412.5,-252 412.5,-252 406.5,-252 400.5,-246 400.5,-240 400.5,-240 400.5,-228 400.5,-228 400.5,-222 406.5,-216 412.5,-216 412.5,-216 509.5,-216 509.5,-216 515.5,-216 521.5,-222 521.5,-228 521.5,-228 521.5,-240 521.5,-240 521.5,-246 515.5,-252 509.5,-252"/>
+<text text-anchor="middle" x="461" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">create_index_kallisto</text>
 </g>
 <!-- 19&#45;&gt;8 -->
-<g id="edge22" class="edge">
+<g id="edge25" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M487.7483,-215.8314C501.0553,-206.7927 517.316,-195.7476 531.6375,-186.0198"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="533.9547,-188.677 540.2603,-180.1628 530.0215,-182.8864 533.9547,-188.677"/>
+</g>
+<!-- 19&#45;&gt;9 -->
+<g id="edge27" class="edge">
+<title>19&#45;&gt;9</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M438.0369,-215.8314C426.8285,-206.9632 413.1791,-196.1637 401.0561,-186.5718"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="402.9697,-183.6229 392.9558,-180.1628 398.6263,-189.1125 402.9697,-183.6229"/>
 </g>
 <!-- 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>
+<path fill="none" stroke="#afd856" stroke-width="2" d="M427,-684C427,-684 317,-684 317,-684 311,-684 305,-678 305,-672 305,-672 305,-660 305,-660 305,-654 311,-648 317,-648 317,-648 427,-648 427,-648 433,-648 439,-654 439,-660 439,-660 439,-672 439,-672 439,-678 433,-684 427,-684"/>
+<text text-anchor="middle" x="372" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">remove_polya_cutadapt</text>
 </g>
 <!-- 20&#45;&gt;9 -->
-<g id="edge23" class="edge">
+<g id="edge26" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M372,-647.8146C372,-620.4983 372,-567.25 372,-522 372,-522 372,-522 372,-306 372,-265.8721 371.2139,-219.4602 370.6274,-190.416"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="374.1218,-190.1092 370.4144,-180.1843 367.1234,-190.255 374.1218,-190.1092"/>
+</g>
+<!-- 20&#45;&gt;16 -->
+<g id="edge33" class="edge">
+<title>20&#45;&gt;16</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M304.8785,-649.5161C253.503,-636.5164 189.6749,-619.3885 179,-612 155.8934,-596.007 137.7849,-569.2491 126.4275,-549.0565"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="129.3804,-547.1587 121.5465,-540.0256 123.2223,-550.4871 129.3804,-547.1587"/>
+</g>
+<!-- 20&#45;&gt;35 -->
+<g id="edge59" class="edge">
+<title>20&#45;&gt;35</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M439.1525,-654.9864C522.9656,-641.2403 665.2549,-617.9035 747.383,-604.4338"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="748.0352,-607.8736 757.3369,-602.8012 746.9022,-600.9659 748.0352,-607.8736"/>
 </g>
 <!-- 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>
-<!-- 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"/>
+<path fill="none" stroke="#56d8d8" stroke-width="2" d="M808.5,-396C808.5,-396 725.5,-396 725.5,-396 719.5,-396 713.5,-390 713.5,-384 713.5,-384 713.5,-372 713.5,-372 713.5,-366 719.5,-360 725.5,-360 725.5,-360 808.5,-360 808.5,-360 814.5,-360 820.5,-366 820.5,-372 820.5,-372 820.5,-384 820.5,-384 820.5,-390 814.5,-396 808.5,-396"/>
+<text text-anchor="middle" x="767" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">merge_TIN_scores</text>
 </g>
-<!-- 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"/>
+<!-- 21&#45;&gt;10 -->
+<g id="edge28" class="edge">
+<title>21&#45;&gt;10</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M775.3273,-359.8314C778.973,-351.8771 783.3309,-342.369 787.3627,-333.5723"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="790.5757,-334.9622 791.5606,-324.4133 784.2123,-332.0456 790.5757,-334.9622"/>
 </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"/>
+<!-- 22 -->
+<g id="node23" class="node">
+<title>22</title>
+<path fill="none" stroke="#d87d56" stroke-width="2" d="M970,-252C970,-252 878,-252 878,-252 872,-252 866,-246 866,-240 866,-240 866,-228 866,-228 866,-222 872,-216 878,-216 878,-216 970,-216 970,-216 976,-216 982,-222 982,-228 982,-228 982,-240 982,-240 982,-246 976,-252 970,-252"/>
+<text text-anchor="middle" x="924" y="-231.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc_all_samples</text>
 </g>
-<!-- 23&#45;&gt;16 -->
+<!-- 22&#45;&gt;11 -->
 <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"/>
+<title>22&#45;&gt;11</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M923.7477,-215.8314C923.6407,-208.131 923.5135,-198.9743 923.3947,-190.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="926.8944,-190.3637 923.2557,-180.4133 919.8951,-190.4609 926.8944,-190.3637"/>
 </g>
-<!-- 24 -->
-<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>
+<!-- 23 -->
+<g id="node24" class="node">
+<title>23</title>
+<path fill="none" stroke="#d86656" stroke-width="2" d="M1107,-396C1107,-396 985,-396 985,-396 979,-396 973,-390 973,-384 973,-384 973,-372 973,-372 973,-366 979,-360 985,-360 985,-360 1107,-360 1107,-360 1113,-360 1119,-366 1119,-372 1119,-372 1119,-384 1119,-384 1119,-390 1113,-396 1107,-396"/>
+<text text-anchor="middle" x="1046" y="-375.5" font-family="sans" font-size="10.00" fill="#000000">rename_star_rpm_for_alfa</text>
 </g>
-<!-- 24&#45;&gt;17 -->
+<!-- 23&#45;&gt;13 -->
 <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"/>
+<title>23&#45;&gt;13</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1049.5328,-359.8314C1051.0301,-352.131 1052.8105,-342.9743 1054.4745,-334.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1057.9465,-334.8975 1056.4196,-324.4133 1051.0752,-333.5614 1057.9465,-334.8975"/>
 </g>
 <!-- 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>
+<path fill="none" stroke="#56d8a2" stroke-width="2" d="M939,-324C939,-324 909,-324 909,-324 903,-324 897,-318 897,-312 897,-312 897,-300 897,-300 897,-294 903,-288 909,-288 909,-288 939,-288 939,-288 945,-288 951,-294 951,-300 951,-300 951,-312 951,-312 951,-318 945,-324 939,-324"/>
+<text text-anchor="middle" x="924" y="-303.5" font-family="sans" font-size="10.00" fill="#000000">alfa_qc</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"/>
+<!-- 23&#45;&gt;29 -->
+<g id="edge49" class="edge">
+<title>23&#45;&gt;29</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1015.2142,-359.8314C998.3832,-349.8983 977.4465,-337.5422 959.8783,-327.1741"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="961.4289,-324.0251 951.0379,-321.9568 957.8711,-330.0536 961.4289,-324.0251"/>
+</g>
+<!-- 24&#45;&gt;15 -->
+<g id="edge32" class="edge">
+<title>24&#45;&gt;15</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M253.0375,-575.8314C254.7487,-568.131 256.7835,-558.9743 258.6852,-550.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="262.1554,-550.9344 260.9082,-540.4133 255.3221,-549.4159 262.1554,-550.9344"/>
+</g>
+<!-- 24&#45;&gt;16 -->
+<g id="edge34" class="edge">
+<title>24&#45;&gt;16</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M214.6815,-575.8314C196.9641,-566.4516 175.1655,-554.9112 156.3016,-544.9244"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="157.7831,-541.7485 147.3076,-540.1628 154.5078,-547.935 157.7831,-541.7485"/>
 </g>
 <!-- 25&#45;&gt;18 -->
-<g id="edge31" class="edge">
+<g id="edge35" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M623.4297,-719.8314C620.1507,-711.9617 616.238,-702.5712 612.6055,-693.8533"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="615.7492,-692.2979 608.6722,-684.4133 609.2876,-694.9902 615.7492,-692.2979"/>
 </g>
 <!-- 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>
+<path fill="none" stroke="#5673d8" stroke-width="2" d="M517.5,-756C517.5,-756 416.5,-756 416.5,-756 410.5,-756 404.5,-750 404.5,-744 404.5,-744 404.5,-732 404.5,-732 404.5,-726 410.5,-720 416.5,-720 416.5,-720 517.5,-720 517.5,-720 523.5,-720 529.5,-726 529.5,-732 529.5,-732 529.5,-744 529.5,-744 529.5,-750 523.5,-756 517.5,-756"/>
+<text text-anchor="middle" x="467" y="-735.5" font-family="sans" font-size="10.00" fill="#000000">extract_transcriptome</text>
 </g>
 <!-- 26&#45;&gt;19 -->
-<g id="edge32" class="edge">
+<g id="edge36" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M467,-719.8146C467,-692.4983 467,-639.25 467,-594 467,-594 467,-594 467,-378 467,-337.8412 464.6417,-291.4372 462.8821,-262.4031"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="466.3599,-261.9376 462.2432,-252.1753 459.3736,-262.3741 466.3599,-261.9376"/>
+</g>
+<!-- 31 -->
+<g id="node32" class="node">
+<title>31</title>
+<path fill="none" stroke="#a7d856" stroke-width="2" d="M275,-684C275,-684 81,-684 81,-684 75,-684 69,-678 69,-672 69,-672 69,-660 69,-660 69,-654 75,-648 81,-648 81,-648 275,-648 275,-648 281,-648 287,-654 287,-660 287,-660 287,-672 287,-672 287,-678 281,-684 275,-684"/>
+<text text-anchor="middle" x="178" y="-663.5" font-family="sans" font-size="10.00" fill="#000000">concatenate_transcriptome_and_genome</text>
+</g>
+<!-- 26&#45;&gt;31 -->
+<g id="edge54" class="edge">
+<title>26&#45;&gt;31</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M404.2848,-722.0806C401.4853,-721.3762 398.7137,-720.6801 396,-720 351.4509,-708.8355 301.7459,-696.5129 261.0607,-686.4615"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="261.7363,-683.0233 251.1888,-684.0234 260.0579,-689.8191 261.7363,-683.0233"/>
 </g>
 <!-- 27&#45;&gt;20 -->
-<g id="edge33" class="edge">
+<g id="edge37" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M327.1405,-719.8314C334.1217,-711.454 342.5391,-701.3531 350.1876,-692.1749"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="352.9425,-694.3362 356.6556,-684.4133 347.5649,-689.8548 352.9425,-694.3362"/>
 </g>
 <!-- 28 -->
 <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>
+<path fill="none" stroke="#d85656" stroke-width="2" d="M814.5,-468C814.5,-468 719.5,-468 719.5,-468 713.5,-468 707.5,-462 707.5,-456 707.5,-456 707.5,-444 707.5,-444 707.5,-438 713.5,-432 719.5,-432 719.5,-432 814.5,-432 814.5,-432 820.5,-432 826.5,-438 826.5,-444 826.5,-444 826.5,-456 826.5,-456 826.5,-462 820.5,-468 814.5,-468"/>
+<text text-anchor="middle" x="767" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">calculate_TIN_scores</text>
 </g>
 <!-- 28&#45;&gt;21 -->
-<g id="edge34" class="edge">
+<g id="edge38" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M767,-431.8314C767,-424.131 767,-414.9743 767,-406.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="770.5001,-406.4132 767,-396.4133 763.5001,-406.4133 770.5001,-406.4132"/>
 </g>
 <!-- 29&#45;&gt;22 -->
-<g id="edge36" class="edge">
+<g id="edge39" 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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M924,-287.8314C924,-280.131 924,-270.9743 924,-262.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="927.5001,-262.4132 924,-252.4133 920.5001,-262.4133 927.5001,-262.4132"/>
 </g>
-<!-- 30&#45;&gt;26 -->
-<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 -->
-<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>
+<!-- 30 -->
+<g id="node31" class="node">
+<title>30</title>
+<path fill="none" stroke="#56d87b" stroke-width="2" d="M1013,-468C1013,-468 977,-468 977,-468 971,-468 965,-462 965,-456 965,-456 965,-444 965,-444 965,-438 971,-432 977,-432 977,-432 1013,-432 1013,-432 1019,-432 1025,-438 1025,-444 1025,-444 1025,-456 1025,-456 1025,-462 1019,-468 1013,-468"/>
+<text text-anchor="middle" x="995" y="-447.5" font-family="sans" font-size="10.00" fill="#000000">star_rpm</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"/>
+<!-- 30&#45;&gt;23 -->
+<g id="edge40" class="edge">
+<title>30&#45;&gt;23</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1007.8695,-431.8314C1013.6835,-423.6232 1020.6696,-413.7606 1027.0646,-404.7323"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1030.0331,-406.5966 1032.9573,-396.4133 1024.321,-402.5505 1030.0331,-406.5966"/>
 </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"/>
+<!-- 31&#45;&gt;24 -->
+<g id="edge41" class="edge">
+<title>31&#45;&gt;24</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M195.9163,-647.8314C204.3442,-639.2848 214.541,-628.9443 223.736,-619.6198"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="226.3131,-621.9912 230.8425,-612.4133 221.3289,-617.0761 226.3131,-621.9912"/>
 </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"/>
+<!-- 32&#45;&gt;28 -->
+<g id="edge48" class="edge">
+<title>32&#45;&gt;28</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M898.6506,-575.9617C878.7822,-566.9259 856.046,-554.7466 838,-540 815.9494,-521.9809 796.3677,-495.9884 783.3837,-476.5649"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="786.2925,-474.6179 777.8971,-468.155 780.4298,-478.4427 786.2925,-474.6179"/>
 </g>
-<!-- 32 -->
-<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>
+<!-- 32&#45;&gt;30 -->
+<g id="edge53" class="edge">
+<title>32&#45;&gt;30</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1007.5603,-576.2456C1024.9625,-568.1131 1041.8571,-556.4803 1052,-540 1060.3863,-526.3739 1058.3221,-518.698 1052,-504 1047.2509,-492.9589 1039.0115,-483.1176 1030.2494,-474.9593"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1032.339,-472.1388 1022.4894,-468.2354 1027.755,-477.4291 1032.339,-472.1388"/>
 </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"/>
+<!-- 33 -->
+<g id="node34" class="node">
+<title>33</title>
+<path fill="none" stroke="#56d85b" stroke-width="2" d="M1031,-540C1031,-540 859,-540 859,-540 853,-540 847,-534 847,-528 847,-528 847,-516 847,-516 847,-510 853,-504 859,-504 859,-504 1031,-504 1031,-504 1037,-504 1043,-510 1043,-516 1043,-516 1043,-528 1043,-528 1043,-534 1037,-540 1031,-540"/>
+<text text-anchor="middle" x="945" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">index_genomic_alignment_samtools</text>
 </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"/>
+<!-- 32&#45;&gt;33 -->
+<g id="edge58" class="edge">
+<title>32&#45;&gt;33</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M945,-575.8314C945,-568.131 945,-558.9743 945,-550.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="948.5001,-550.4132 945,-540.4133 941.5001,-550.4133 948.5001,-550.4132"/>
 </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"/>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M900.0831,-503.8314C876.065,-494.1162 846.3166,-482.0831 821.0408,-471.8592"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="822.1767,-468.5432 811.5939,-468.038 819.5518,-475.0325 822.1767,-468.5432"/>
 </g>
-<!-- 33&#45;&gt;31 -->
+<!-- 33&#45;&gt;30 -->
 <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"/>
+<title>33&#45;&gt;30</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M957.6171,-503.8314C963.3172,-495.6232 970.1663,-485.7606 976.4359,-476.7323"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="979.3838,-478.6234 982.213,-468.4133 973.6342,-474.6306 979.3838,-478.6234"/>
 </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"/>
+<!-- 34 -->
+<g id="node35" class="node">
+<title>34</title>
+<path fill="none" stroke="#d88d56" stroke-width="2" d="M741,-540C741,-540 605,-540 605,-540 599,-540 593,-534 593,-528 593,-528 593,-516 593,-516 593,-510 599,-504 605,-504 605,-504 741,-504 741,-504 747,-504 753,-510 753,-516 753,-516 753,-528 753,-528 753,-534 747,-540 741,-540"/>
+<text text-anchor="middle" x="673" y="-519.5" font-family="sans" font-size="10.00" fill="#000000">extract_transcripts_as_bed12</text>
+</g>
+<!-- 34&#45;&gt;28 -->
+<g id="edge47" class="edge">
+<title>34&#45;&gt;28</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M696.7202,-503.8314C708.4094,-494.8779 722.6688,-483.9558 735.2809,-474.2955"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="737.4769,-477.0222 743.2874,-468.1628 733.2203,-471.4651 737.4769,-477.0222"/>
+</g>
+<!-- 35&#45;&gt;28 -->
+<g id="edge46" class="edge">
+<title>35&#45;&gt;28</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M757.2532,-588.8041C697.0784,-581.7456 605.1884,-566.8201 584,-540 548.3016,-494.8132 631.8376,-470.715 697.5067,-459.1486"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="698.1838,-462.5838 707.4602,-457.4652 697.0165,-455.6819 698.1838,-462.5838"/>
+</g>
+<!-- 35&#45;&gt;30 -->
+<g id="edge52" class="edge">
+<title>35&#45;&gt;30</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M811.7077,-575.6902C813.4544,-555.5713 819.2369,-523.5255 838,-504 868.811,-471.937 919.5025,-458.9075 954.9243,-453.6152"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="955.4924,-457.0704 964.9339,-452.2633 954.5554,-450.1334 955.4924,-457.0704"/>
+</g>
+<!-- 35&#45;&gt;33 -->
+<g id="edge57" class="edge">
+<title>35&#45;&gt;33</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M844.8139,-575.8314C862.2707,-566.4516 883.7487,-554.9112 902.3352,-544.9244"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="904.0446,-547.9792 911.197,-540.1628 900.7314,-541.8129 904.0446,-547.9792"/>
+</g>
+<!-- 36&#45;&gt;29 -->
+<g id="edge50" class="edge">
+<title>36&#45;&gt;29</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M903.8132,-359.8314C906.7644,-351.9617 910.2858,-342.5712 913.555,-333.8533"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="916.8609,-335.0055 917.095,-324.4133 910.3066,-332.5476 916.8609,-335.0055"/>
 </g>
 </g>
 </svg>
diff --git a/install/environment.dev.yml b/install/environment.dev.yml
index ab5c30ac6c60c998193981c084150d4bc907b41d..3fa2e724fd16391bdb210d3afb4aeaec647b450a 100644
--- a/install/environment.dev.yml
+++ b/install/environment.dev.yml
@@ -1,4 +1,4 @@
-name: rhea
+name: zarp
 channels:
   - bioconda
   - conda-forge
diff --git a/install/environment.root.yml b/install/environment.root.yml
index 7017feb85a963093898030ae135b094244c4774d..acfbe7ef302ddc3e07fac3d689b619c7ebe03fa0 100644
--- a/install/environment.root.yml
+++ b/install/environment.root.yml
@@ -1,13 +1,17 @@
-name: rhea
+name: zarp
 channels:
   - conda-forge
   - defaults
 dependencies:
   - graphviz=2.40.1
+  - jinja2=2.11.2
+  - networkx=2.4
   - pip=20.0.2
+  - pygments=2.6.1
+  - pygraphviz=1.3
   - python=3.7.4
   - singularity=3.5.2
   - pip:
     - pandas==1.0.1
-    - snakemake==5.10.0
+    - snakemake==5.19.2
 
diff --git a/install/environment.yml b/install/environment.yml
index 4fa641ab259484f747f4af4d70f5464d41649aab..8fcba7a48080b33b67fbb45454e1a52aacf3783a 100644
--- a/install/environment.yml
+++ b/install/environment.yml
@@ -1,11 +1,16 @@
-name: rhea
+name: zarp
 channels:
+  - conda-forge
   - defaults
 dependencies:
   - graphviz=2.40.1
+  - jinja2=2.11.2
+  - networkx=2.4
   - pip=20.0.2
+  - pygments=2.6.1
+  - pygraphviz=1.3
   - python=3.7.4
   - pip:
     - pandas==1.0.1
-    - snakemake==5.10.0
+    - snakemake==5.19.2
 
diff --git a/pipeline_documentation.md b/pipeline_documentation.md
index 0a29c8cd2608fb12fdc96a86309073cb5384cebd..e9b582a05fb7774c7ff0d7ab4dcbb7a4e326ecdb 100644
--- a/pipeline_documentation.md
+++ b/pipeline_documentation.md
@@ -1,4 +1,4 @@
-# Rhea: workflow documentation
+# ZARP: workflow documentation
 
 This document describes the individual steps of the workflow. For instructions
 on installation and usage please see [here](README.md).
@@ -30,6 +30,8 @@ on installation and usage please see [here](README.md).
     - [**plot_TIN_scores**](#plot_tin_scores)
     - [**salmon_quantmerge_genes**](#salmon_quantmerge_genes)
     - [**salmon_quantmerge_transcripts**](#salmon_quantmerge_transcripts)
+    - [**kallisto_merge_genes**](#kallisto_merge_genes)
+    - [**kallisto_merge_transcripts**](#kallisto_merge_transcripts)
     - [**generate_alfa_index**](#generate_alfa_index)
     - [**alfa_qc**](#alfa_qc)
     - [**alfa_qc_all_samples**](#alfa_qc_all_samples)
@@ -37,7 +39,7 @@ on installation and usage please see [here](README.md).
     - [**prepare_multiqc_config**](#prepare_multiqc_config)
     - [**multiqc_report**](#multiqc_report)
     - [**finish**](#finish)
-  - [**Sequencing mode-specific**](#sequencing-mode-specific)
+    - [**Sequencing mode-specific**](#sequencing-mode-specific)
     - [**remove_adapters_cutadapt**](#remove_adapters_cutadapt)
     - [**remove_polya_cutadapt**](#remove_polya_cutadapt)
     - [**map_genome_star**](#map_genome_star)
@@ -416,6 +418,36 @@ Merge transcript-level expression estimates for all samples with
   - Transcript read count table (custom `.tsv`); used in
     [**multiqc_report**](#multiqc_report)
 
+#### `kallisto_merge_genes`
+
+Merge gene-level expression estimates for all samples with 
+[custom script][custom-script-merge-kallisto].
+
+> Rule is run once per sequencing mode
+
+- **Input**
+  - Transcript expression tables (custom `.h5`) for samples of same sequencing
+    mode; from [**genome_quantification_kallisto**](#genome_quantification_kallisto) 
+  - Gene annotation file (custom `.gtf`)
+- **Output**
+  - Gene TPM table (custom `.tsv`)
+  - Gene read count table (custom `.tsv`)
+  - Mapping gene/transcript IDs table (custom `.tsv`)
+
+#### `kallisto_merge_transcripts`
+
+Merge transcript-level expression estimates for all samples with 
+[custom script][custom-script-merge-kallisto].
+
+> Rule is run once per sequencing mode
+
+- **Input**
+  - Transcript expression tables (custom `.h5`) for samples of same sequencing
+    mode; from [**genome_quantification_kallisto**](#genome_quantification_kallisto) 
+- **Output**
+  - Transcript TPM table (custom `.tsv`)
+  - Transcript read count table (custom `.tsv`)
+
 #### `generate_alfa_index`
 
 Create index for [**ALFA**](#third-party-software-used).
@@ -681,6 +713,7 @@ Generate pseudoalignments of reads to transcripts with
 [code-star]: <https://github.com/alexdobin/STAR>
 [custom-script-gtf-to-bed12]: <https://git.scicore.unibas.ch/zavolan_group/tools/gtf_transcript_type_to_bed12>
 [custom-script-tin]: <https://git.scicore.unibas.ch/zavolan_group/tools/tin_score_calculation>
+[custom-script-merge-kallisto]: <https://github.com/zavolanlab/merge_kallisto>
 [docs-alfa]: <https://github.com/biocompibens/ALFA#manual>
 [docs-bedgraphtobigwig]: <http://hgdownload.soe.ucsc.edu/admin/exe/linux.x86_64/>
 [docs-bedtools]: <https://bedtools.readthedocs.io/en/latest/>
diff --git a/scripts/labkey_to_snakemake.dict.tsv b/scripts/prepare_inputs.dict.tsv
similarity index 98%
rename from scripts/labkey_to_snakemake.dict.tsv
rename to scripts/prepare_inputs.dict.tsv
index 0a54bf629b963f485871fb3fea39cd7e4ae184d0..ab2f741f01dabb2b5ac89837e1a7ea05e34c7cb5 100644
--- a/scripts/labkey_to_snakemake.dict.tsv
+++ b/scripts/prepare_inputs.dict.tsv
@@ -2,7 +2,7 @@ labkey	snakemake
 Entry_Date	entry_date
 Path_Fastq_Files	fastq_path
 Condition_Name	condition
-Replicate_Name	replicate_name
+Sample_Name	sample_name
 Single_Paired	seqmode
 Mate1_File	fq1
 Mate2_File	fq2
diff --git a/scripts/labkey_to_snakemake.py b/scripts/prepare_inputs.py
similarity index 94%
rename from scripts/labkey_to_snakemake.py
rename to scripts/prepare_inputs.py
index 6cce1e4c82708e8bd4de7168358075be70ffc95a..426902a014801bd3ddc677d9b6f01d644f8e8334 100755
--- a/scripts/labkey_to_snakemake.py
+++ b/scripts/prepare_inputs.py
@@ -1,8 +1,9 @@
 #!/usr/bin/env python3
 
-"""Create input table and config for Rhea."""
+"""Create input table and config for ZARP."""
 
 import argparse
+from functools import partial
 import gzip
 import logging
 import math
@@ -17,244 +18,6 @@ import pandas as pd
 logger = logging.getLogger(__name__)
 
 
-def main():
-    """
-    Create input table and config for Rhea.
-    """
-    args = parse_cli_args()
-
-    setup_logging(
-        logger=logger,
-        verbose=args.verbose,
-        debug=args.debug,
-    )
-
-    # 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(
-            args.table,
-            header=0,
-            sep='\t',
-            index_col=None,
-            comment='#',
-            engine='python',
-        )
-        from_api = False
-
-    # get LabKey to Snakemake sample table field mappings
-    input_dict = pd.read_csv(
-        args.input_to_output_mapping,
-        header=0,
-        sep='\t',
-        index_col=None,
-        comment='#',
-        engine='python',
-    )
-    args.input_to_output_mapping.close()
-    input_dict.set_index('snakemake', inplace=True, drop=True)
-
-    # create Snakemake table
-    logger.info("Creating Snakemake input table...")
-    snakemake_table = pd.DataFrame()
-
-    for index, row in input_table.iterrows():
-
-        # 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)
-        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',
-        )
-        genome = expand_path(
-            args.resources_dir,
-            organism,
-            '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
-
-    # adjust sample table format
-    snakemake_table.fillna('XXXXXXXXXXXXXXX', inplace=True)
-    snakemake_table = snakemake_table.astype(
-        {
-            "sd": int,
-            "mean": int,
-            "multimappers": int,
-            "kmer": int,
-            "index_size": int,
-        }
-    )
-
-    # write Snakemake sample table
-    logger.info("Writing Snakemake input table...")
-    snakemake_table.to_csv(
-        args.output_table,
-        sep='\t',
-        header=True,
-        index=False)
-    args.output_table.close()
-
-    # 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.
@@ -298,7 +61,7 @@ def parse_cli_args() -> argparse.Namespace:
         type=argparse.FileType('r'),
         default=os.path.join(
             os.path.dirname(__file__),
-            'labkey_to_snakemake.dict.tsv',
+            'prepare_inputs.dict.tsv',
         ),
         help="lookup table with mappings from input (LabKey or LabKey-like) "
              "to output (Snakemake) table; default: '%(default)s'",
@@ -316,14 +79,14 @@ def parse_cli_args() -> argparse.Namespace:
         "--output-table",
         type=argparse.FileType('w'),
         default="samples.tsv",
-        help="output sample table for use in Rhea (default: %(default)s)",
+        help="output sample table for use in ZARP (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: "
+        help="output Snakemake configuration file for use in ZARP (default: "
              "%(default)s)",
         metavar="FILE",
     )
@@ -331,10 +94,16 @@ def parse_cli_args() -> argparse.Namespace:
         "--output-dir",
         type=str,
         default=os.getcwd(),
-        help="directory to which Rhea results and logs are to be written "
+        help="directory to which ZARP results and logs are to be written "
              "(default: %(default)s)",
         metavar="DIR",
     )
+    parser.add_argument(
+        "--no-process-paths",
+        action="store_true",
+        default=False,
+        help="do not attempt to create absolute paths in output files",
+    )
 
     behavior = parser.add_argument_group("workflow behavior")
     behavior.add_argument(
@@ -415,7 +184,7 @@ def parse_cli_args() -> argparse.Namespace:
 
     if args.logo:
         args.logo.close()
-        args.logo = os.path.abspath(args.logo.name)
+        args.logo = args.logo.name
     else:
         args.logo = ""
 
@@ -510,7 +279,7 @@ def get_read_length(file: str) -> int:
 
 
 def kmer_from_read_length(
-    l: int,
+    length: int,
     k_max: int = 31,
     k_min: int = 11,
 ) -> int:
@@ -523,7 +292,7 @@ def kmer_from_read_length(
     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 length: length of read in nucleotides
     :param k_max: maximum allowed k-mer size
     :param k_min: minimum allowed k-mer size
 
@@ -531,9 +300,9 @@ def kmer_from_read_length(
         where k is biggest odd integer that fulfills k < l / 2
     """
     k = k_max
-    if l < 2 * k_max + 1:
+    if length < 2 * k_max + 1:
         # ensure kmer is smaller than half of read length
-        k = math.floor((l - 1) / 2)
+        k = math.floor((length - 1) / 2)
         # ensure kmer is odd
         if not k % 2:
             k -= 1
@@ -639,6 +408,7 @@ def expand_path(
     *args: str,
     anchor: str = os.getcwd(),
     expand: bool = True,
+    no_abs: bool = False,
 ) -> str:
     """
     Constructs absolute path.
@@ -654,10 +424,14 @@ def expand_path(
         the path will be returned without considering the anchor
     :param expand: whether environment variables and user directories (e.g,
         `~`) shall be expanded
+    :param join_only: path fragments in args are joined, but no further
+        processing is done
 
     :returns: absolute path
     """
     suffix = os.path.join(*args)
+    if no_abs:
+        return suffix
     if os.path.isabs(suffix):
         return os.path.normpath(suffix)
     if expand:
@@ -668,17 +442,257 @@ def expand_path(
         )
     if os.path.isabs(suffix):
         return os.path.normpath(suffix)
-    if expand:
-        anchor = os.path.expanduser(
-            os.path.expandvars(
-                anchor
-            )
+    anchor = os.path.expanduser(
+        os.path.expandvars(
+            anchor
         )
+    )
     path = os.path.join(anchor, suffix)
     return os.path.normpath(path)
 
 
+def main(args):
+    """
+    Create input table and config for ZARP.
+    """
+    setup_logging(
+        logger=logger,
+        verbose=args.verbose,
+        debug=args.debug,
+    )
+
+    # 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(
+            args.table,
+            header=0,
+            sep='\t',
+            index_col=None,
+            comment='#',
+            engine='python',
+        )
+        from_api = False
+
+    # get LabKey to Snakemake sample table field mappings
+    input_dict = pd.read_csv(
+        args.input_to_output_mapping,
+        header=0,
+        sep='\t',
+        index_col=None,
+        comment='#',
+        engine='python',
+    )
+    args.input_to_output_mapping.close()
+    input_dict.set_index('snakemake', inplace=True, drop=True)
+
+    # create Snakemake table
+    logger.info("Creating Snakemake input table...")
+    snakemake_table = pd.DataFrame()
+
+    for index, row in input_table.iterrows():
+
+        # extract data from LabKey-like table
+        lk_sample_name = row[input_dict.loc['sample_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_sample_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)
+        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',
+        )
+        genome = expand_path(
+            args.resources_dir,
+            organism,
+            '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
+
+    # adjust sample table format
+    snakemake_table.fillna('XXXXXXXXXXXXXXX', inplace=True)
+    snakemake_table = snakemake_table.astype(
+        {
+            "sd": int,
+            "mean": int,
+            "multimappers": int,
+            "kmer": int,
+            "index_size": int,
+        }
+    )
+
+    # write Snakemake sample table
+    logger.info("Writing Snakemake input table...")
+    snakemake_table.to_csv(
+        args.output_table,
+        sep='\t',
+        header=True,
+        index=False)
+    args.output_table.close()
+
+    # 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()
+
+
 if __name__ == '__main__':
-    main()
+    args = parse_cli_args()
+
+    # Set default according to CLI arg
+    expand_path = partial(expand_path, no_abs=args.no_process_paths)  # type: ignore
+
+    main(args)
     logger.info("Program completed successfully.")
     sys.exit(0)
diff --git a/tests/input_files/cluster.json b/tests/input_files/cluster.json
index 6df74cd215dafb47429c05e07bb42f399feab211..12e9b992aabc265e7c2daaa15366e638a14900f9 100644
--- a/tests/input_files/cluster.json
+++ b/tests/input_files/cluster.json
@@ -42,7 +42,13 @@
   {
     "time": "03:00:00",
     "threads":"8",
-    "mem":"10G"
+    "mem":"40G"
+  },
+  "sort_bed_4_big":
+  {
+    "time": "03:00:00",
+    "threads":"8",
+    "mem":"20G"
   },
   "create_index_kallisto":
   {
@@ -168,13 +174,13 @@
   {
     "time": "03:00:00",
     "threads":"6",
-    "mem":"10G"
+    "mem":"20G"
   }, 
   "quantification_salmon":
   {
     "time": "03:00:00",
     "threads":"6",
-    "mem":"10G"
+    "mem":"20G"
   }, 
   "pe_genome_quantification_kallisto":
   {
diff --git a/tests/input_files/config.mutliple_lanes.yml b/tests/input_files/config.mutliple_lanes.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8cfbb38d52f0feb1fcb68b74ed0adf96f35eb313
--- /dev/null
+++ b/tests/input_files/config.mutliple_lanes.yml
@@ -0,0 +1,12 @@
+---
+  samples: "../input_files/samples.multiple_lanes.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"
+  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/pe_lane1/synthetic_split_lane1.mate_1.fastq.gz b/tests/input_files/pe_lane1/synthetic_split_lane1.mate_1.fastq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..271cc8cef1d054f2737245901609b6d927b4e157
Binary files /dev/null and b/tests/input_files/pe_lane1/synthetic_split_lane1.mate_1.fastq.gz differ
diff --git a/tests/input_files/pe_lane1/synthetic_split_lane1.mate_2.fastq.gz b/tests/input_files/pe_lane1/synthetic_split_lane1.mate_2.fastq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..98edea4069db6cc2e12d958da2877b1fe7947854
Binary files /dev/null and b/tests/input_files/pe_lane1/synthetic_split_lane1.mate_2.fastq.gz differ
diff --git a/tests/input_files/pe_lane2/synthetic_split_lane2.mate_1.fastq.gz b/tests/input_files/pe_lane2/synthetic_split_lane2.mate_1.fastq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..6ec3e5ddd52038029d50a21088ab8706cc6512cf
Binary files /dev/null and b/tests/input_files/pe_lane2/synthetic_split_lane2.mate_1.fastq.gz differ
diff --git a/tests/input_files/pe_lane2/synthetic_split_lane2.mate_2.fastq.gz b/tests/input_files/pe_lane2/synthetic_split_lane2.mate_2.fastq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..98e06db62d4326246856ef51a54c24e592f03915
Binary files /dev/null and b/tests/input_files/pe_lane2/synthetic_split_lane2.mate_2.fastq.gz differ
diff --git a/tests/input_files/samples.multiple_lanes.tsv b/tests/input_files/samples.multiple_lanes.tsv
new file mode 100644
index 0000000000000000000000000000000000000000..7968fb46b8331974de83555f0ea6d01b0fe08821
--- /dev/null
+++ b/tests/input_files/samples.multiple_lanes.tsv
@@ -0,0 +1,5 @@
+sample	seqmode	fq1	fq2	index_size	kmer	fq1_3p	fq1_5p	fq2_3p	fq2_5p	organism	gtf	genome	sd	mean	kallisto_directionality	alfa_directionality	alfa_plus	alfa_minus	multimappers	soft_clip	pass_mode	libtype	fq1_polya_3p	fq1_polya_5p	fq2_polya_3p	fq2_polya_5p
+synthetic_10_reads_paired_synthetic_10_reads_paired	pe	../input_files/pe_lane1/synthetic_split_lane1.mate_1.fastq.gz	../input_files/pe_lane1/synthetic_split_lane1.mate_2.fastq.gz	75	31	AGATCGGAAGAGCACA	XXXXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/genome.fa	100	250	--fr	fr-firststrand	str1	str2	10	EndToEnd	None	A	AAAAAAAAAAAAAAA	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX	TTTTTTTTTTTTTTT
+synthetic_10_reads_paired_synthetic_10_reads_paired	pe	../input_files/pe_lane2/synthetic_split_lane2.mate_1.fastq.gz	../input_files/pe_lane2/synthetic_split_lane2.mate_2.fastq.gz	75	31	AGATCGGAAGAGCACA	XXXXXXXXXXXXXXX	AGATCGGAAGAGCGT	XXXXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/genome.fa	100	250	--fr	fr-firststrand	str1	str2	10	EndToEnd	None	A	AAAAAAAAAAAAAAA	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX	TTTTTTTTTTTTTTT
+synthetic_10_reads_mate_1_synthetic_10_reads_mate_1	se	../input_files/se_lane1/synthetic_split_lane1.mate_1.fastq.gz	XXXXXXXXXXXXXXX	75	31	AGATCGGAAGAGCACA	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/genome.fa	100	250	--fr	fr-firststrand	str1	str2	10	EndToEnd	None	A	AAAAAAAAAAAAAAA	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX
+synthetic_10_reads_mate_1_synthetic_10_reads_mate_1	se	../input_files/se_lane2/synthetic_split_lane2.mate_1.fastq.gz	XXXXXXXXXXXXXXX	75	31	AGATCGGAAGAGCACA	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX	homo_sapiens	../input_files/homo_sapiens/annotation.gtf	../input_files/homo_sapiens/genome.fa	100	250	--fr	fr-firststrand	str1	str2	10	EndToEnd	None	A	AAAAAAAAAAAAAAA	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX	XXXXXXXXXXXXXXX
diff --git a/tests/input_files/se_lane1/synthetic_split_lane1.mate_1.fastq.gz b/tests/input_files/se_lane1/synthetic_split_lane1.mate_1.fastq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..271cc8cef1d054f2737245901609b6d927b4e157
Binary files /dev/null and b/tests/input_files/se_lane1/synthetic_split_lane1.mate_1.fastq.gz differ
diff --git a/tests/input_files/se_lane2/synthetic_split_lane2.mate_1.fastq.gz b/tests/input_files/se_lane2/synthetic_split_lane2.mate_1.fastq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..6ec3e5ddd52038029d50a21088ab8706cc6512cf
Binary files /dev/null and b/tests/input_files/se_lane2/synthetic_split_lane2.mate_1.fastq.gz differ
diff --git a/tests/test_integration_workflow/expected_output.files b/tests/test_integration_workflow/expected_output.files
index cc9d90b0700ba426f21e12e4016bfd6e39bf9c6a..e1cdb51cc4fa398ce9ed25f6c8a498823521be30 100644
--- a/tests/test_integration_workflow/expected_output.files
+++ b/tests/test_integration_workflow/expected_output.files
@@ -83,8 +83,8 @@ 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_mate_1_synthetic_10_reads_mate_1/ALFA/Unique/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.Unique.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.Unique.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
@@ -106,3 +106,8 @@ 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
+results/summary_kallisto/tx2geneID.tsv
+results/summary_kallisto/genes_counts.tsv
+results/summary_kallisto/transcripts_counts.tsv
+results/summary_kallisto/transcripts_tpm.tsv
+results/summary_kallisto/genes_tpm.tsv
\ No newline at end of file
diff --git a/tests/test_integration_workflow/expected_output.md5 b/tests/test_integration_workflow/expected_output.md5
index f8f074ee41f58d23057567fc86fc3357fe8ff9c8..92429556e2a1db6434184fade06aac4a0130337b 100644
--- a/tests/test_integration_workflow/expected_output.md5
+++ b/tests/test_integration_workflow/expected_output.md5
@@ -101,8 +101,13 @@ ed3428feeb7257b0a69ead76a417e339  results/samples/synthetic_10_reads_mate_1_synt
 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
+ba090b1b4a2473891de97493d3244956  results/multiqc_summary/multiqc_data/multiqc_fastqc.txt
 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
+9f22fcd1b38d9dd692e77cb27f2e52f2  results/summary_kallisto/tx2geneID.tsv
+a9514da3fe2c94b9dca71d9e0160be69  results/summary_kallisto/genes_counts.tsv
+0d288e71d017a090152384fd915dc2a1  results/summary_kallisto/transcripts_counts.tsv
+58a075e4e938d690748b556141912d1c  results/summary_kallisto/transcripts_tpm.tsv
+8f29696ede8e5d290513f56d3a0b4bff  results/summary_kallisto/genes_tpm.tsv
diff --git a/tests/test_integration_workflow/test.local.sh b/tests/test_integration_workflow/test.local.sh
index 16d715785b7e3e878f59824709df4c295196cc0e..883424d61a180e858d2b6b3372574acfbe3fad1f 100755
--- a/tests/test_integration_workflow/test.local.sh
+++ b/tests/test_integration_workflow/test.local.sh
@@ -3,11 +3,14 @@
 # Tear down test environment
 cleanup () {
     rc=$?
+    rm -rf .cache/
+    rm -rf .config/
     rm -rf .fontconfig/
     rm -rf .java/
     rm -rf .snakemake/
     rm -rf logs/
     rm -rf results/
+    rm -rf snakemake_report.html
     cd $user_dir
     echo "Exit status: $rc"
 }
@@ -32,6 +35,12 @@ snakemake \
     --singularity-args="--bind ${PWD}/../input_files,${PWD}/../../images" \
     --verbose
 
+# Create a Snakemake report after the workflow execution
+snakemake \
+    --snakefile="../../Snakefile" \
+    --configfile="../input_files/config.yaml" \
+    --report="snakemake_report.html"
+
 # Check md5 sum of some output files
 find results/ -type f -name \*\.gz -exec gunzip '{}' \;
 find results/ -type f -name \*\.zip -exec sh -c 'unzip -o {} -d $(dirname {})' \;
diff --git a/tests/test_integration_workflow/test.slurm.sh b/tests/test_integration_workflow/test.slurm.sh
index fef99cc5b6efafa1d09eaec58aa0a25abeacb926..0145ae7b1dc412699c59fd6adae31a83f1d08503 100755
--- a/tests/test_integration_workflow/test.slurm.sh
+++ b/tests/test_integration_workflow/test.slurm.sh
@@ -3,11 +3,14 @@
 # Tear down test environment
 cleanup () {
     rc=$?
+    rm -rf .cache/
+    rm -rf .config/
     rm -rf .fontconfig/
     rm -rf .java/
     rm -rf .snakemake/
     rm -rf logs/
     rm -rf results/
+    rm -rf snakemake_report.html
     cd $user_dir
     echo "Exit status: $rc"
 }
@@ -34,6 +37,12 @@ snakemake \
     --singularity-args="--bind ${PWD}/../input_files,${PWD}/../../images" \
     --verbose
 
+# Create a Snakemake report after the workflow execution
+snakemake \
+    --snakefile="../../Snakefile" \
+    --configfile="../input_files/config.yaml" \
+    --report="snakemake_report.html"
+
 # Check md5 sum of some output files
 find results/ -type f -name \*\.gz -exec gunzip '{}' \;
 find results/ -type f -name \*\.zip -exec sh -c 'unzip -o {} -d $(dirname {})' \;
diff --git a/tests/test_integration_workflow_multiple_lanes/expected_output.md5 b/tests/test_integration_workflow_multiple_lanes/expected_output.md5
new file mode 100644
index 0000000000000000000000000000000000000000..7a6ae82d02eb20ee568017f8150bc7a671dadc4c
--- /dev/null
+++ b/tests/test_integration_workflow_multiple_lanes/expected_output.md5
@@ -0,0 +1,113 @@
+cbaebdb67aee4784b64aff7fec9fda42  results/kallisto_indexes/homo_sapiens/kallisto.idx
+0ac1afd9a4f380afd70be75b21814c64  results/salmon_indexes/homo_sapiens/31/salmon.idx/versionInfo.json
+51b5292e3a874119c0e1aa566e95d70c  results/salmon_indexes/homo_sapiens/31/salmon.idx/duplicate_clusters.tsv
+7f8679a6e6622e1b611642b5735f357c  results/salmon_indexes/homo_sapiens/31/salmon.idx/info.json
+dee7cdc194d5d0617552b7a3b5ad8dfb  results/star_indexes/homo_sapiens/75/STAR_index/chrLength.txt
+8e2e96e2d6b7f29940ad5de40662b7cb  results/star_indexes/homo_sapiens/75/STAR_index/chrNameLength.txt
+d0826904b8afa45352906ad9591f2bfb  results/star_indexes/homo_sapiens/75/STAR_index/chrName.txt
+8d3291e6bcdbe9902fbd7c887494173f  results/star_indexes/homo_sapiens/75/STAR_index/chrStart.txt
+83ea3c15ab782b5c55bfaefda8e7aad8  results/star_indexes/homo_sapiens/75/STAR_index/exonGeTrInfo.tab
+bad9d837f9a988694cc7080ee6d2997a  results/star_indexes/homo_sapiens/75/STAR_index/exonInfo.tab
+0c0b013fb8cbb8f3cb7a7bf92f3b1544  results/star_indexes/homo_sapiens/75/STAR_index/geneInfo.tab
+00dda17b3c3983873d1474e9a758d6e6  results/star_indexes/homo_sapiens/75/STAR_index/Genome
+c0d91c3af633d9439bfd0160d11efe4d  results/star_indexes/homo_sapiens/75/STAR_index/SA
+27884e419e42a7c8b3b2f49543de0260  results/star_indexes/homo_sapiens/75/STAR_index/SAindex
+bae93882f9148a6c55816b733c32a3a2  results/star_indexes/homo_sapiens/75/STAR_index/sjdbInfo.txt
+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.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.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.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.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
+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
+9f22fcd1b38d9dd692e77cb27f2e52f2  results/summary_kallisto/tx2geneID.tsv
+a9514da3fe2c94b9dca71d9e0160be69  results/summary_kallisto/genes_counts.tsv
+0d288e71d017a090152384fd915dc2a1  results/summary_kallisto/transcripts_counts.tsv
+58a075e4e938d690748b556141912d1c  results/summary_kallisto/transcripts_tpm.tsv
+8f29696ede8e5d290513f56d3a0b4bff  results/summary_kallisto/genes_tpm.tsv
diff --git a/tests/test_integration_workflow_multiple_lanes/test.local.sh b/tests/test_integration_workflow_multiple_lanes/test.local.sh
new file mode 100755
index 0000000000000000000000000000000000000000..018b47dba928ddd76de92c12645db6c47e951f12
--- /dev/null
+++ b/tests/test_integration_workflow_multiple_lanes/test.local.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+# Tear down test environment
+cleanup () {
+    rc=$?
+    rm -rf .cache/
+    rm -rf .config/
+    rm -rf .fontconfig/
+    rm -rf .java/
+    rm -rf .snakemake/
+    rm -rf logs/
+    rm -rf results/
+    rm -rf snakemake_report.html
+    cd $user_dir
+    echo "Exit status: $rc"
+}
+trap cleanup EXIT
+
+# Set up test environment
+set -eo pipefail  # ensures that script exits at first command that exits with non-zero status
+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
+
+# Run tests
+snakemake \
+    --snakefile="../../Snakefile" \
+    --configfile="../input_files/config.mutliple_lanes.yml" \
+    --cores=4 \
+    --printshellcmds \
+    --rerun-incomplete \
+    --use-singularity \
+    --singularity-args="--bind ${PWD}/../input_files,${PWD}/../../images" \
+    --verbose
+
+# Create a Snakemake report after the workflow execution
+snakemake \
+    --snakefile="../../Snakefile" \
+    --configfile="../input_files/config.mutliple_lanes.yml" \
+    --report="snakemake_report.html"
+
+# Check md5 sum of some output files
+find results/ -type f -name \*\.gz -exec gunzip '{}' \;
+find results/ -type f -name \*\.zip -exec sh -c 'unzip -o {} -d $(dirname {})' \;
+md5sum --check "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 
+# vice versa because processing might cut off parts of reads (if testing STAR directly, add '-f 1' 
+# as additional option)
+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.se.Aligned.sortedByCoord.out.bam \
+    | wc -l)
+if [ $result != "0" ]; then
+    echo "Alignments for mate 1 reads are not consistent with ground truth"
+    exit 1
+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.pe.Aligned.sortedByCoord.out.bam \
+    | wc -l)
+if [ $result != "0" ]; then
+    echo "Alignments for mate 1 reads are not consistent with ground truth"
+    exit 1
+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/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/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_multiple_lanes/test.slurm.sh b/tests/test_integration_workflow_multiple_lanes/test.slurm.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f2dd45936dde9abd5570ed98b4fac4991a23509c
--- /dev/null
+++ b/tests/test_integration_workflow_multiple_lanes/test.slurm.sh
@@ -0,0 +1,93 @@
+#!/bin/bash
+
+# Tear down test environment
+cleanup () {
+    rc=$?
+    rm -rf .cache/
+    rm -rf .config/
+    rm -rf .fontconfig/
+    rm -rf .java/
+    rm -rf .snakemake/
+    rm -rf logs/
+    rm -rf results/
+    rm -rf snakemake_report.html
+    cd $user_dir
+    echo "Exit status: $rc"
+}
+trap cleanup EXIT
+
+# Set up test environment
+set -eo pipefail  # ensures that script exits at first command that exits with non-zero status
+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
+
+# Run tests
+snakemake \
+    --snakefile="../../Snakefile" \
+    --configfile="../input_files/config.mutliple_lanes.yml" \
+    --cluster-config="../input_files/cluster.json" \
+    --cluster="sbatch --cpus-per-task={cluster.threads} --mem={cluster.mem} --qos={cluster.queue} --time={cluster.time} --job-name={cluster.name} -o {cluster.out} -p scicore" \
+    --cores=256 \
+    --printshellcmds \
+    --rerun-incomplete \
+    --use-singularity \
+    --singularity-args="--bind ${PWD}/../input_files,${PWD}/../../images" \
+    --verbose
+
+# Create a Snakemake report after the workflow execution
+snakemake \
+    --snakefile="../../Snakefile" \
+    --configfile="../input_files/config.mutliple_lanes.yml" \
+    --report="snakemake_report.html"
+
+# Check md5 sum of some output files
+find results/ -type f -name \*\.gz -exec gunzip '{}' \;
+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
+
+# Check whether STAR produces expected alignments
+# STAR alignments need to be fully within ground truth alignments for tests to pass; not checking 
+# vice versa because processing might cut off parts of reads (if testing STAR directly, add '-f 1' 
+# as additional option)
+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.se.Aligned.sortedByCoord.out.bam \
+    | wc -l)
+if [ $result != "0" ]; then
+    echo "Alignments for mate 1 reads are not consistent with ground truth"
+    exit 1
+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.pe.Aligned.sortedByCoord.out.bam \
+    | wc -l)
+if [ $result != "0" ]; then
+    echo "Alignments for mate 1 reads are not consistent with ground truth"
+    exit 1
+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/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/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_table/expected_output.md5 b/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5
deleted file mode 100644
index abbf9abd4b49d63efb6d675a01d87eb5945c4b72..0000000000000000000000000000000000000000
--- a/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5
+++ /dev/null
@@ -1,2 +0,0 @@
-057cbd5757ca7f0b94909eeeca531af3  config.yaml
-34422785b7cc77d1aac73d25e767dc2d  samples.tsv
diff --git a/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5 b/tests/test_scripts_prepare_inputs_labkey/expected_output.md5
similarity index 100%
rename from tests/test_scripts_labkey_to_snakemake_api/expected_output.md5
rename to tests/test_scripts_prepare_inputs_labkey/expected_output.md5
diff --git a/tests/test_scripts_labkey_to_snakemake_api/test.sh b/tests/test_scripts_prepare_inputs_labkey/test.sh
similarity index 90%
rename from tests/test_scripts_labkey_to_snakemake_api/test.sh
rename to tests/test_scripts_prepare_inputs_labkey/test.sh
index 4f18c4203bf0699a5e7f4f644a95d442592df687..dea4515a96cedb3b9e93b77510049391ef00f5e6 100755
--- a/tests/test_scripts_labkey_to_snakemake_api/test.sh
+++ b/tests/test_scripts_prepare_inputs_labkey/test.sh
@@ -30,17 +30,17 @@ password ${LABKEY_PASS}
 EOF
 
 # Run tests
-python "../../scripts/labkey_to_snakemake.py" \
+python "../../scripts/prepare_inputs.py" \
     --labkey-domain="${LABKEY_HOST}" \
     --labkey-path="/Zavolan Group/TEST_LABKEY" \
-    --input-to-output-mapping="../../scripts/labkey_to_snakemake.dict.tsv" \
+    --input-to-output-mapping="../../scripts/prepare_inputs.dict.tsv" \
     --resources-dir="../input_files" \
     --output-table="samples.tsv" \
     --config-file="config.yaml" \
     --multimappers='10' \
     --logo="../../images/logo.128px.png" \
     --debug \
-    "RNA_Seq_data_template"
+    "RNA_Seq_data_template_raw"
 
 # Check if dry run completes
 snakemake \
diff --git a/tests/test_scripts_prepare_inputs_table/expected_output.md5 b/tests/test_scripts_prepare_inputs_table/expected_output.md5
new file mode 100644
index 0000000000000000000000000000000000000000..53afed559996a1e89802ff5bb9307351b8004fdf
--- /dev/null
+++ b/tests/test_scripts_prepare_inputs_table/expected_output.md5
@@ -0,0 +1,2 @@
+40bd0f0fcecdd0d9bc932f63c2811478  config.yaml
+c8dcc5a203e9046806c4090525960151  samples.tsv
diff --git a/tests/test_scripts_labkey_to_snakemake_table/input_table.tsv b/tests/test_scripts_prepare_inputs_table/input_table.tsv
similarity index 77%
rename from tests/test_scripts_labkey_to_snakemake_table/input_table.tsv
rename to tests/test_scripts_prepare_inputs_table/input_table.tsv
index ee6d5fc45ddff7f69b6ce4a9a97532dd4afb1e72..10b0244153e375114d91f354919fe50ab434c414 100644
--- a/tests/test_scripts_labkey_to_snakemake_table/input_table.tsv
+++ b/tests/test_scripts_prepare_inputs_table/input_table.tsv
@@ -1,3 +1,3 @@
-Mate2_5p_Adapter	Condition_Name	Name_Quality_Control_File_Mate1	Disease_Short_Name	Single_Paired	Gender	Entry_Date	Disease_Description	Strain_Isolate_Breed_Ecotype	Genotype_Description	Mate1_File	Source_Tissue_Name	Developmental_Stage	Mate1_Direction	Quality_Control_Flag	Genotype_Short_Name	Strain_Isolate_Breed_Ecotype_ID	Fragment_Length_Mean	Organism	Contaminant_Sequences	TaxonID	Documentation	Prepared_By	_labkeyurl_Entry_Date	Molecule	Mate2_Direction	Library_preparation_kit	Checksum_Raw_FASTQ_Mate1	Cycles	Fragment_Length_SD	Replicate_Name	Passage_Number	Mate1_5p_Adapter	Mate2_3p_Adapter	Path_Fastq_Files	Mate1_3p_Adapter	Treatment_Short_Name	Age	Sequencing_Date	Checksum_Raw_FASTQ_Mate2	Biomaterial_Provider	Treatment_Description	Sample_Preparation_Date	BioAnalyzer_File	Sequencing_Instrument	Additional_Tissue_Description	Protocol_File	Name_Quality_Control_File_Mate2	Tissue_Code	File_Name_Metadata_File	Mate2_File
+Mate2_5p_Adapter	Condition_Name	Name_Quality_Control_File_Mate1	Disease_Short_Name	Single_Paired	Gender	Entry_Date	Disease_Description	Strain_Isolate_Breed_Ecotype	Genotype_Description	Mate1_File	Source_Tissue_Name	Developmental_Stage	Mate1_Direction	Quality_Control_Flag	Genotype_Short_Name	Strain_Isolate_Breed_Ecotype_ID	Fragment_Length_Mean	Organism	Contaminant_Sequences	TaxonID	Documentation	Prepared_By	_labkeyurl_Entry_Date	Molecule	Mate2_Direction	Library_preparation_kit	Checksum_Raw_FASTQ_Mate1	Cycles	Fragment_Length_SD	Sample_Name	Passage_Number	Mate1_5p_Adapter	Mate2_3p_Adapter	Path_Fastq_Files	Mate1_3p_Adapter	Treatment_Short_Name	Age	Sequencing_Date	Checksum_Raw_FASTQ_Mate2	Biomaterial_Provider	Treatment_Description	Sample_Preparation_Date	BioAnalyzer_File	Sequencing_Instrument	Additional_Tissue_Description	Protocol_File	Name_Quality_Control_File_Mate2	Tissue_Code	File_Name_Metadata_File	Mate2_File
 	synthetic_10_reads_paired	xxx	xxx	PAIRED	xxx	Fri Dec 20 00:00:00 CET 2019	xxx	xxx	xxx	synthetic.mate_1.fastq.gz	xxx	xxx	SENSE	xxx	xxx	xxx	250.0	Homo sapiens	xxx	9606	xxx	xxx	/labkey/Zavolan%20Group/Test_labkey/list-details.view?listId=9&pk=../input_files/project1	xxx	ANTISENSE	xxx	xxx	xxx	100.0	synthetic_10_reads_paired	xxx		AGATCGGAAGAGCGT	../input_files/project1	AGATCGGAAGAGCACA	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	synthetic.mate_2.fastq.gz
 	synthetic_10_reads_mate_1	xxx	xxx	SINGLE	xxx	Fri Dec 20 00:00:00 CET 2019	xxx	xxx	xxx	synthetic.mate_1.fastq.gz	xxx	xxx	SENSE	xxx	xxx	xxx	250.0	Homo sapiens	xxx	9606	xxx	xxx	/labkey/Zavolan%20Group/Test_labkey/list-details.view?listId=9&pk=../input_files/project2	xxx		xxx	xxx	xxx	100.0	synthetic_10_reads_mate_1	xxx			../input_files/project2	AGATCGGAAGAGCACA	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	xxx	
diff --git a/tests/test_scripts_labkey_to_snakemake_table/test.sh b/tests/test_scripts_prepare_inputs_table/test.sh
similarity index 86%
rename from tests/test_scripts_labkey_to_snakemake_table/test.sh
rename to tests/test_scripts_prepare_inputs_table/test.sh
index e60c4fc0884494340d8efad5d14809c33a1b8c76..ebd9391f2303cfe8e251c127d5748faa68ea7ba8 100755
--- a/tests/test_scripts_labkey_to_snakemake_table/test.sh
+++ b/tests/test_scripts_prepare_inputs_table/test.sh
@@ -21,13 +21,15 @@ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
 cd $script_dir/
 
 # Run tests
-python "../../scripts/labkey_to_snakemake.py" \
-    --input-to-output-mapping="../../scripts/labkey_to_snakemake.dict.tsv" \
+python "../../scripts/prepare_inputs.py" \
+    --input-to-output-mapping="../../scripts/prepare_inputs.dict.tsv" \
     --resources-dir="../input_files" \
     --output-table="samples.tsv" \
     --config-file="config.yaml" \
     --multimappers='10' \
     --logo="../../images/logo.128px.png" \
+    --output-dir="" \
+    --no-process-paths \
     "input_table.tsv"
 
 
diff --git a/workflow/rules/paired_end.snakefile.smk b/workflow/rules/paired_end.snakefile.smk
index d7f40dd71c1728c2bd7e3ddb6e02b86bd6d878c9..25046d0cf00abdbfe6c780cbe14011d39e858e6a 100644
--- a/workflow/rules/paired_end.snakefile.smk
+++ b/workflow/rules/paired_end.snakefile.smk
@@ -31,13 +31,13 @@ rule pe_remove_adapters_cutadapt:
 
     params:
         adapter_3_mate1 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq1_3p'],
+            get_sample('fq1_3p', search_id='index', search_value=wildcards.sample),
         adapter_5_mate1 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq1_5p'],
+            get_sample('fq1_5p', search_id='index', search_value=wildcards.sample),
         adapter_3_mate2 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq2_3p'],
+            get_sample('fq2_3p', search_id='index', search_value=wildcards.sample),
         adapter_5_mate2 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq2_5p']
+            get_sample('fq2_5p', search_id='index', search_value=wildcards.sample)
 
     singularity:
         "docker://zavolab/cutadapt:1.16-slim"
@@ -104,13 +104,25 @@ rule pe_remove_polya_cutadapt:
 
     params:
         polya_3_mate1 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq1_polya_3p'],
+            get_sample(
+                'fq1_polya_3p',
+                search_id='index',
+                search_value=wildcards.sample),
         polya_5_mate1 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq1_polya_5p'],
+            get_sample(
+                'fq1_polya_5p',
+                search_id='index',
+                search_value=wildcards.sample),
         polya_3_mate2 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq2_polya_3p'],
+            get_sample(
+                'fq2_polya_3p',
+                search_id='index',
+                search_value=wildcards.sample),
         polya_5_mate2 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq2_polya_5p']
+            get_sample(
+                'fq2_polya_5p',
+                search_id='index',
+                search_value=wildcards.sample)
 
     singularity:
         "docker://zavolab/cutadapt:1.16-slim"
@@ -156,8 +168,14 @@ rule pe_map_genome_star:
         index = lambda wildcards:
             os.path.join(
                 config["star_indexes"],
-                str(samples_table.loc[wildcards.sample, "organism"]),
-                str(samples_table.loc[wildcards.sample, "index_size"]),
+                get_sample(
+                    'organism',
+                    search_id='index',
+                    search_value=wildcards.sample),
+                get_sample(
+                    'index_size',
+                    search_id='index',
+                    search_value=wildcards.sample),
                 "STAR_index",
                 "chrNameLength.txt"),
         reads1 = os.path.join(
@@ -190,8 +208,14 @@ rule pe_map_genome_star:
         index = lambda wildcards:
             os.path.join(
                 config["star_indexes"],
-                str(samples_table.loc[wildcards.sample, "organism"]),
-                str(samples_table.loc[wildcards.sample, "index_size"]),
+                get_sample(
+                    'organism',
+                    search_id='index',
+                    search_value=wildcards.sample),
+                get_sample(
+                    'index_size',
+                    search_id='index',
+                    search_value=wildcards.sample),
                 "STAR_index"),
         outFileNamePrefix = os.path.join(
             config["output_dir"],
@@ -200,11 +224,20 @@ rule pe_map_genome_star:
             "map_genome",
             "{sample}.pe."),
         multimappers = lambda wildcards:
-            str(samples_table.loc[wildcards.sample, "multimappers"]),
+            get_sample(
+                'multimappers',
+                search_id='index',
+                search_value=wildcards.sample),
         soft_clip = lambda wildcards:
-            samples_table.loc[wildcards.sample, "soft_clip"],
+            get_sample(
+                'soft_clip',
+                search_id='index',
+                search_value=wildcards.sample),
         pass_mode = lambda wildcards:
-            samples_table.loc[wildcards.sample, "pass_mode"]
+            get_sample(
+                'pass_mode',
+                search_id='index',
+                search_value=wildcards.sample),
 
     singularity:
         "docker://zavolab/star:2.7.3a-slim"
@@ -228,7 +261,7 @@ rule pe_map_genome_star:
         --readFilesCommand zcat \
         --outSAMunmapped None  \
         --outFilterMultimapNmax {params.multimappers} \
-        --outFilterMultimapScoreRange 1 \
+        --outFilterMultimapScoreRange 0 \
         --outFileNamePrefix {params.outFileNamePrefix} \
         --outSAMattributes All \
         --outStd BAM_SortedByCoordinate \
@@ -259,12 +292,21 @@ rule pe_quantification_salmon:
             "{sample}",
             "{sample}.pe.remove_polya_mate2.fastq.gz"),
         gtf = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'gtf'],
+            get_sample(
+                'gtf',
+                search_id='index',
+                search_value=wildcards.sample),
         index = lambda wildcards:
             os.path.join(
                 config["salmon_indexes"],
-                str(samples_table.loc[wildcards.sample, "organism"]),
-                str(samples_table.loc[wildcards.sample, "kmer"]),
+                get_sample(
+                    'organism',
+                    search_id='index',
+                    search_value=wildcards.sample),
+                get_sample(
+                    'kmer',
+                    search_id='index',
+                    search_value=wildcards.sample),
                 "salmon.idx")
 
     output:
@@ -288,7 +330,10 @@ rule pe_quantification_salmon:
             "{sample}",
             "{sample}.salmon.pe"),
         libType = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'libtype']
+            get_sample(
+                'libtype',
+                search_id='index',
+                search_value=wildcards.sample)
 
     log:
         stderr = os.path.join(
@@ -340,7 +385,10 @@ rule pe_genome_quantification_kallisto:
         index = lambda wildcards:
             os.path.join(
                 config["kallisto_indexes"],
-                samples_table.loc[wildcards.sample, 'organism'],
+                get_sample(
+                    'organism',
+                    search_id='index',
+                    search_value=wildcards.sample),
                 "kallisto.idx")
 
     output:
@@ -358,7 +406,10 @@ rule pe_genome_quantification_kallisto:
             "{sample}",
             "quant_kallisto"),
         directionality = lambda wildcards:
-            samples_table.loc[wildcards.sample, "kallisto_directionality"]
+            get_sample(
+                'kallisto_directionality',
+                search_id='index',
+                search_value=wildcards.sample)
 
     singularity:
         "docker://zavolab/kallisto:0.46.1-slim"
diff --git a/workflow/rules/single_end.snakefile.smk b/workflow/rules/single_end.snakefile.smk
index df41f963df128f4598509a8e778ab52197e92008..071b9e5061de4cf9f08ffef1c86feb21a7e7fca1 100644
--- a/workflow/rules/single_end.snakefile.smk
+++ b/workflow/rules/single_end.snakefile.smk
@@ -19,9 +19,15 @@ rule remove_adapters_cutadapt:
 
     params:
         adapters_3 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq1_3p'],
+            get_sample(
+                'fq1_3p',
+                search_id='index',
+                search_value=wildcards.sample),
         adapters_5 = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'fq1_5p']
+            get_sample(
+                'fq1_5p',
+                search_id='index',
+                search_value=wildcards.sample)
 
     singularity:
         "docker://zavolab/cutadapt:1.16-slim"
@@ -72,9 +78,15 @@ rule remove_polya_cutadapt:
 
     params:
         polya_3 = lambda wildcards:
-            samples_table.loc[wildcards.sample, "fq1_polya_3p"],
+            get_sample(
+                'fq1_polya_3p',
+                search_id='index',
+                search_value=wildcards.sample),
         polya_5 = lambda wildcards:
-            samples_table.loc[wildcards.sample, "fq1_polya_5p"]
+            get_sample(
+                'fq1_polya_5p',
+                search_id='index',
+                search_value=wildcards.sample)
 
     singularity:
         "docker://zavolab/cutadapt:1.16-slim"
@@ -115,8 +127,8 @@ rule map_genome_star:
         index = lambda wildcards:
             os.path.join(
                 config["star_indexes"],
-                str(samples_table.loc[wildcards.sample, "organism"]),
-                str(samples_table.loc[wildcards.sample, "index_size"]),
+                get_sample('organism', search_id='index', search_value=wildcards.sample),
+                get_sample('index_size', search_id='index', search_value=wildcards.sample),
                 "STAR_index",
                 "chrNameLength.txt"),
         reads = os.path.join(
@@ -144,8 +156,8 @@ rule map_genome_star:
         index = lambda wildcards:
             os.path.join(
                 config["star_indexes"],
-                str(samples_table.loc[wildcards.sample, "organism"]),
-                str(samples_table.loc[wildcards.sample, "index_size"]),
+                get_sample('organism', search_id='index', search_value=wildcards.sample),
+                get_sample('index_size', search_id='index', search_value=wildcards.sample),
                 "STAR_index"),
         outFileNamePrefix = os.path.join(
             config["output_dir"],
@@ -154,11 +166,20 @@ rule map_genome_star:
             "map_genome",
             "{sample}.se."),
         multimappers = lambda wildcards:
-                samples_table.loc[wildcards.sample, "multimappers"],
+            get_sample(
+                'multimappers',
+                search_id='index',
+                search_value=wildcards.sample),
         soft_clip = lambda wildcards:
-                samples_table.loc[wildcards.sample, "soft_clip"],
+            get_sample(
+                'soft_clip',
+                search_id='index',
+                search_value=wildcards.sample),
         pass_mode = lambda wildcards:
-                samples_table.loc[wildcards.sample, "pass_mode"],
+            get_sample(
+                'pass_mode',
+                search_id='index',
+                search_value=wildcards.sample)
 
     singularity:
         "docker://zavolab/star:2.7.3a-slim"
@@ -182,7 +203,7 @@ rule map_genome_star:
         --readFilesCommand zcat \
         --outSAMunmapped None  \
         --outFilterMultimapNmax {params.multimappers} \
-        --outFilterMultimapScoreRange 1 \
+        --outFilterMultimapScoreRange 0 \
         --outFileNamePrefix {params.outFileNamePrefix} \
         --outSAMattributes All \
         --outStd BAM_SortedByCoordinate \
@@ -210,11 +231,20 @@ rule quantification_salmon:
         index = lambda wildcards:
             os.path.join(
                 config["salmon_indexes"],
-                str(samples_table.loc[wildcards.sample, "organism"]),
-                str(samples_table.loc[wildcards.sample, "kmer"]),
+                get_sample(
+                    'organism',
+                    search_id='index',
+                    search_value=wildcards.sample),
+                get_sample(
+                    'kmer',
+                    search_id='index',
+                    search_value=wildcards.sample),
                 "salmon.idx"),
         gtf = lambda wildcards:
-            samples_table.loc[wildcards.sample, "gtf"]
+            get_sample(
+                'gtf',
+                search_id='index',
+                search_value=wildcards.sample)
 
     output:
         gn_estimates = os.path.join(
@@ -237,8 +267,20 @@ rule quantification_salmon:
             "{sample}",
             "{sample}.salmon.se"),
         libType = lambda wildcards:
-                samples_table.loc[wildcards.sample, "libtype"]
-
+            get_sample(
+                'libtype',
+                search_id='index',
+                search_value=wildcards.sample),
+        fraglen = lambda wildcards:
+            get_sample(
+                'mean',
+                search_id='index',
+                search_value=wildcards.sample),
+        fragsd = lambda wildcards:
+            get_sample(
+                'sd',
+                search_id='index',
+                search_value=wildcards.sample)
     log:
         stderr = os.path.join(
             config["log_dir"],
@@ -262,6 +304,8 @@ rule quantification_salmon:
         --seqBias \
         --validateMappings \
         --threads {threads} \
+        --fldMean {params.fraglen} \
+        --fldSD {params.fragsd} \
         --writeUnmappedNames \
         --index {input.index} \
         --geneMap {input.gtf} \
@@ -283,7 +327,10 @@ rule genome_quantification_kallisto:
         index = lambda wildcards:
             os.path.join(
                 config["kallisto_indexes"],
-                samples_table.loc[wildcards.sample, "organism"],
+                get_sample(
+                    'organism',
+                    search_id='index',
+                    search_value=wildcards.sample),
                 "kallisto.idx")
 
     output:
@@ -301,11 +348,20 @@ rule genome_quantification_kallisto:
             "{sample}",
             "quant_kallisto"),
         fraglen = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'mean'],
+            get_sample(
+                'mean',
+                search_id='index',
+                search_value=wildcards.sample),
         fragsd = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'sd'],
+            get_sample(
+                'sd',
+                search_id='index',
+                search_value=wildcards.sample),
         directionality = lambda wildcards:
-            samples_table.loc[wildcards.sample, 'kallisto_directionality']
+            get_sample(
+                'kallisto_directionality',
+                search_id='index',
+                search_value=wildcards.sample)
 
     threads: 8
 
diff --git a/workflow/scripts/rhea_multiqc_config.py b/workflow/scripts/zarp_multiqc_config.py
similarity index 97%
rename from workflow/scripts/rhea_multiqc_config.py
rename to workflow/scripts/zarp_multiqc_config.py
index 89dbfb2e4fc78ea08e8703a0aa70125adeffff8e..68d2d6cf0b10f405db0eee2edf66d72898eb69b9 100644
--- a/workflow/scripts/rhea_multiqc_config.py
+++ b/workflow/scripts/zarp_multiqc_config.py
@@ -3,7 +3,7 @@
 # -----------------------------------------------------------------------------
 # Author : Maria Katsantoni, Maciek Bak
 # Company: Mihaela Zavolan, Biozentrum, Basel
-# This script is part of the Zavolan lab Rhea pipeline.
+# This script is part of the Zavolan lab ZARP pipeline.
 # In this script the config file used by multiqc
 # (https://multiqc.info) is created.
 # -----------------------------------------------------------------------------
@@ -62,9 +62,9 @@ def main():
         parser.print_help()
         sys.exit(1)
 
-    title = "Rhea"
+    title = "ZARP"
     subtitle = "RNA-Seq processing pipeline developed by Zavolan Lab"
-    logo_title = 'Rhea'
+    logo_title = "ZARP"
     project_type = "Snakemake workflow"
     analysis_type = "RNA-seq"