From bb1f9b8f7d098afaa778b1795315e99df3d9758e Mon Sep 17 00:00:00 2001
From: BIOPZ-Iborra de Toledo Paula <paula.iborradetoledo@unibas.ch>
Date: Fri, 21 Feb 2020 19:48:02 +0100
Subject: [PATCH] Add rule that combines TPM values from Salmon

-  Remove files with non-deterministic output from `tests/test_integration_workflow/expected_output.files`
-  Update MD5 sums in `tests/test_integration_workflow/expected_output.md5`
-  Update new workflow DAG and rule graph images
---
 Snakefile                                     |  79 ++-
 images/dag_test_workflow.svg                  | 340 ++++++++++
 images/workflow_dag.svg                       | 346 ++++++++++
 .../expected_output.files                     |  11 +-
 .../expected_output.md5                       |  21 +-
 workflow/rules/paired_end.snakefile.smk       | 589 +++++++++---------
 workflow/rules/single_end.snakefile.smk       | 489 ++++++++-------
 7 files changed, 1311 insertions(+), 564 deletions(-)
 create mode 100644 images/workflow_dag.svg

diff --git a/Snakefile b/Snakefile
index aa8c347..a73c547 100644
--- a/Snakefile
+++ b/Snakefile
@@ -102,6 +102,9 @@ rule finish:
                 for i in list(samples_table.index.values)
             ]
         ),
+        salmon_merge_genes = os.path.join(config["output_dir"], "summary_salmon", "quantmerge", "genes_tpm.tsv"),
+        salmon_merge_tr = os.path.join(config["output_dir"], "summary_salmon", "quantmerge", "tr_tpm.tsv"),
+
 
 
 rule create_index_star:
@@ -184,7 +187,7 @@ rule create_index_salmon:
     params:
         kmerLen = "{kmer}",
     singularity:
-        "docker://zavolab/salmon:0.11.0"
+        "docker://zavolab/salmon:1.1.0-slim"
     log:
         os.path.join(
             config['log_dir'],
@@ -306,3 +309,77 @@ rule calculate_TIN_scores:
         -n 100 \
         1> {output.TIN_score} \
         2> {log}"
+
+
+rule salmon_quantmerge_genes_tpm:
+    ''' Merge gene quantifications into a single file. '''
+    input:
+        salmon_in = expand(os.path.join(
+            config["output_dir"], 
+            "{seqmode}", 
+            "{sample}", 
+            "salmon_quant",
+            "quant.genes.sf"), 
+            zip,
+                sample= list(samples_table.index.values), 
+                seqmode= list(samples_table["seqmode"])),
+    output:
+        salmon_out = os.path.join(config["output_dir"], "summary_salmon", "quantmerge", "genes_tpm.tsv")
+    params:
+        salmon_dir = expand(os.path.join(
+            config["output_dir"], 
+            "{seqmode}", 
+            "{sample}", 
+            "salmon_quant"), 
+            zip,
+                sample= list(samples_table.index.values), 
+                seqmode= list(samples_table["seqmode"])),
+        sample_name_list = expand("{sample}", sample= list(samples_table.index.values))
+    log:
+        os.path.join(config["log_dir"], "salmon_quantmerge_genes_tpm.log")
+    threads:    1
+    singularity:
+        "docker://zavolab/salmon:1.1.0-slim"
+    shell:
+        "(salmon quantmerge \
+        --quants {params.salmon_dir} \
+        --genes \
+        --names {params.sample_name_list} \
+        --column tpm \
+        --output {output.salmon_out}) &> {log}"
+
+rule salmon_quantmerge_tr_tpm:
+    ''' Merge gene quantifications into a single file. '''
+    input:
+        salmon_in = expand(os.path.join(
+            config["output_dir"], 
+            "{seqmode}", 
+            "{sample}", 
+            "salmon_quant",
+            "quant.sf"), 
+            zip,
+                sample= list(samples_table.index.values), 
+                seqmode= list(samples_table["seqmode"])),
+    output:
+        salmon_out = os.path.join(config["output_dir"], "summary_salmon", "quantmerge", "tr_tpm.tsv")
+    params:
+        salmon_dir = expand(os.path.join(
+            config["output_dir"], 
+            "{seqmode}", 
+            "{sample}", 
+            "salmon_quant"), 
+            zip,
+                sample= list(samples_table.index.values), 
+                seqmode= list(samples_table["seqmode"])),
+        sample_name_list = expand("{sample}", sample= list(samples_table.index.values))
+    log:
+        os.path.join(config["log_dir"], "salmon_quantmerge_tr_tpm.log")
+    threads:    1
+    singularity:
+        "docker://zavolab/salmon:1.1.0-slim" 
+    shell:
+        "(salmon quantmerge \
+        --quants {params.salmon_dir} \
+        --names {params.sample_name_list} \
+        --column tpm \
+        --output {output.salmon_out}) &> {log}"
diff --git a/images/dag_test_workflow.svg b/images/dag_test_workflow.svg
index 9f9e7ad..4059234 100644
--- a/images/dag_test_workflow.svg
+++ b/images/dag_test_workflow.svg
@@ -1,6 +1,21 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<<<<<<< HEAD
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: snakemake_dag Pages: 1 -->
+<svg width="1626pt" height="414pt"
+ viewBox="0.00 0.00 1626.00 414.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 410)">
+<title>snakemake_dag</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-410 1622,-410 1622,4 -4,4"/>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<path fill="none" stroke="#56b1d8" stroke-width="2" d="M853,-36C853,-36 823,-36 823,-36 817,-36 811,-30 811,-24 811,-24 811,-12 811,-12 811,-6 817,0 823,0 823,0 853,0 853,0 859,0 865,-6 865,-12 865,-12 865,-24 865,-24 865,-30 859,-36 853,-36"/>
+<text text-anchor="middle" x="838" y="-15.5" font-family="sans" font-size="10.00" fill="#000000">finish</text>
+=======
 <!-- Generated by graphviz version 2.42.3 (20191010.1750)
  -->
 <!-- Title: snakemake_dag Pages: 1 -->
@@ -14,104 +29,236 @@
 <title>0</title>
 <path fill="none" stroke="#56d873" stroke-width="2" d="M780.5,-36C780.5,-36 750.5,-36 750.5,-36 744.5,-36 738.5,-30 738.5,-24 738.5,-24 738.5,-12 738.5,-12 738.5,-6 744.5,0 750.5,0 750.5,0 780.5,0 780.5,0 786.5,0 792.5,-6 792.5,-12 792.5,-12 792.5,-24 792.5,-24 792.5,-30 786.5,-36 780.5,-36"/>
 <text text-anchor="middle" x="765.5" y="-15.5" font-family="sans" font-size="10.00">finish</text>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 1 -->
 <g id="node2" class="node">
 <title>1</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#b6d856" stroke-width="2" d="M280,-108C280,-108 12,-108 12,-108 6,-108 0,-102 0,-96 0,-96 0,-84 0,-84 0,-78 6,-72 12,-72 12,-72 280,-72 280,-72 286,-72 292,-78 292,-84 292,-84 292,-96 292,-96 292,-102 286,-108 280,-108"/>
+<text text-anchor="middle" x="146" y="-93" font-family="sans" font-size="10.00" fill="#000000">pe_fastqc</text>
+<text text-anchor="middle" x="146" y="-82" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text>
+=======
 <path fill="none" stroke="#5673d8" stroke-width="2" d="M313,-108C313,-108 12,-108 12,-108 6,-108 0,-102 0,-96 0,-96 0,-84 0,-84 0,-78 6,-72 12,-72 12,-72 313,-72 313,-72 319,-72 325,-78 325,-84 325,-84 325,-96 325,-96 325,-102 319,-108 313,-108"/>
 <text text-anchor="middle" x="162.5" y="-93" font-family="sans" font-size="10.00">pe_fastqc</text>
 <text text-anchor="middle" x="162.5" y="-82" font-family="sans" font-size="10.00">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 1&#45;&gt;0 -->
 <g id="edge1" class="edge">
 <title>1&#45;&gt;0</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M292.0256,-72.9788C295.0432,-72.6476 298.0374,-72.321 301,-72 488.5678,-51.6794 713.2844,-29.9183 800.6774,-21.5536"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="801.2618,-25.0138 810.8833,-20.578 800.5956,-18.0456 801.2618,-25.0138"/>
+=======
 <path fill="none" stroke="grey" stroke-width="2" d="M309.24,-71.97C447.86,-55.87 646.37,-32.83 728.13,-23.34"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="728.89,-26.77 738.42,-22.14 728.09,-19.82 728.89,-26.77"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 2 -->
 <g id="node3" class="node">
 <title>2</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#566bd8" stroke-width="2" d="M602,-108C602,-108 322,-108 322,-108 316,-108 310,-102 310,-96 310,-96 310,-84 310,-84 310,-78 316,-72 322,-72 322,-72 602,-72 602,-72 608,-72 614,-78 614,-84 614,-84 614,-96 614,-96 614,-102 608,-108 602,-108"/>
+<text text-anchor="middle" x="462" y="-93" font-family="sans" font-size="10.00" fill="#000000">fastqc</text>
+<text text-anchor="middle" x="462" y="-82" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text>
+=======
 <path fill="none" stroke="#d86e56" stroke-width="2" d="M668,-108C668,-108 355,-108 355,-108 349,-108 343,-102 343,-96 343,-96 343,-84 343,-84 343,-78 349,-72 355,-72 355,-72 668,-72 668,-72 674,-72 680,-78 680,-84 680,-84 680,-96 680,-96 680,-102 674,-108 668,-108"/>
 <text text-anchor="middle" x="511.5" y="-93" font-family="sans" font-size="10.00">fastqc</text>
 <text text-anchor="middle" x="511.5" y="-82" font-family="sans" font-size="10.00">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 2&#45;&gt;0 -->
 <g id="edge2" class="edge">
 <title>2&#45;&gt;0</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M556.3953,-71.9243C635.649,-56.7481 744.6992,-35.8661 801.0125,-25.0827"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="801.7314,-28.5087 810.8946,-23.1904 800.4148,-21.6336 801.7314,-28.5087"/>
+=======
 <path fill="none" stroke="grey" stroke-width="2" d="M573.31,-71.97C621.91,-58.57 687.98,-40.36 728.63,-29.16"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="729.68,-32.5 738.39,-26.47 727.82,-25.75 729.68,-32.5"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 3 -->
 <g id="node4" class="node">
 <title>3</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#88d856" stroke-width="2" d="M817.5,-180C817.5,-180 714.5,-180 714.5,-180 708.5,-180 702.5,-174 702.5,-168 702.5,-168 702.5,-156 702.5,-156 702.5,-150 708.5,-144 714.5,-144 714.5,-144 817.5,-144 817.5,-144 823.5,-144 829.5,-150 829.5,-156 829.5,-156 829.5,-168 829.5,-168 829.5,-174 823.5,-180 817.5,-180"/>
+<text text-anchor="middle" x="766" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">pe_quantification_salmon</text>
+=======
 <path fill="none" stroke="#d8bc56" stroke-width="2" d="M556.5,-252C556.5,-252 438.5,-252 438.5,-252 432.5,-252 426.5,-246 426.5,-240 426.5,-240 426.5,-228 426.5,-228 426.5,-222 432.5,-216 438.5,-216 438.5,-216 556.5,-216 556.5,-216 562.5,-216 568.5,-222 568.5,-228 568.5,-228 568.5,-240 568.5,-240 568.5,-246 562.5,-252 556.5,-252"/>
 <text text-anchor="middle" x="497.5" y="-231.5" font-family="sans" font-size="10.00">pe_quantification_salmon</text>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 3&#45;&gt;0 -->
 <g id="edge3" class="edge">
 <title>3&#45;&gt;0</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M732.4003,-143.8076C719.4596,-134.8793 706.092,-122.8246 699,-108 692.0952,-93.5666 689.9641,-85.2042 699,-72 710.8942,-54.619 763.8165,-37.5188 800.8108,-27.3633"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="802.0247,-30.6614 810.7754,-24.6886 800.2099,-23.9007 802.0247,-30.6614"/>
+</g>
+<!-- 9 -->
+<g id="node10" class="node">
+<title>9</title>
+<path fill="none" stroke="#ced856" stroke-width="2" d="M966,-108C966,-108 854,-108 854,-108 848,-108 842,-102 842,-96 842,-96 842,-84 842,-84 842,-78 848,-72 854,-72 854,-72 966,-72 966,-72 972,-72 978,-78 978,-84 978,-84 978,-96 978,-96 978,-102 972,-108 966,-108"/>
+<text text-anchor="middle" x="910" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_genes</text>
+</g>
+<!-- 3&#45;&gt;9 -->
+<g id="edge23" class="edge">
+<title>3&#45;&gt;9</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M802.3373,-143.8314C821.3396,-134.3302 844.7758,-122.6121 864.9252,-112.5374"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="866.545,-115.6407 873.924,-108.038 863.4145,-109.3797 866.545,-115.6407"/>
+</g>
+<!-- 10 -->
+<g id="node11" class="node">
+<title>10</title>
+<path fill="none" stroke="#d86e56" stroke-width="2" d="M812,-108C812,-108 720,-108 720,-108 714,-108 708,-102 708,-96 708,-96 708,-84 708,-84 708,-78 714,-72 720,-72 720,-72 812,-72 812,-72 818,-72 824,-78 824,-84 824,-84 824,-96 824,-96 824,-102 818,-108 812,-108"/>
+<text text-anchor="middle" x="766" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_tr</text>
+</g>
+<!-- 3&#45;&gt;10 -->
+<g id="edge25" class="edge">
+<title>3&#45;&gt;10</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M766,-143.8314C766,-136.131 766,-126.9743 766,-118.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="769.5001,-118.4132 766,-108.4133 762.5001,-118.4133 769.5001,-118.4132"/>
+=======
 <path fill="none" stroke="grey" stroke-width="2" d="M529.12,-215.95C568.61,-193.87 637.19,-152.87 688.5,-108 710.51,-88.76 731.97,-63.22 746.62,-44.44"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="749.53,-46.39 752.85,-36.33 743.98,-42.13 749.53,-46.39"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 4 -->
 <g id="node5" class="node">
 <title>4</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#569ad8" stroke-width="2" d="M953.5,-180C953.5,-180 866.5,-180 866.5,-180 860.5,-180 854.5,-174 854.5,-168 854.5,-168 854.5,-156 854.5,-156 854.5,-150 860.5,-144 866.5,-144 866.5,-144 953.5,-144 953.5,-144 959.5,-144 965.5,-150 965.5,-156 965.5,-156 965.5,-168 965.5,-168 965.5,-174 959.5,-180 953.5,-180"/>
+<text text-anchor="middle" x="910" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">quantification_salmon</text>
+=======
 <path fill="none" stroke="#d8a456" stroke-width="2" d="M700,-252C700,-252 599,-252 599,-252 593,-252 587,-246 587,-240 587,-240 587,-228 587,-228 587,-222 593,-216 599,-216 599,-216 700,-216 700,-216 706,-216 712,-222 712,-228 712,-228 712,-240 712,-240 712,-246 706,-252 700,-252"/>
 <text text-anchor="middle" x="649.5" y="-231.5" font-family="sans" font-size="10.00">quantification_salmon</text>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 4&#45;&gt;0 -->
 <g id="edge4" class="edge">
 <title>4&#45;&gt;0</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M950.1027,-143.9226C964.4399,-135.2521 979.0139,-123.3548 987,-108 994.3828,-93.8051 996.1862,-85.1001 987,-72 973.8484,-53.245 914.7722,-36.043 875.0749,-26.3079"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="875.7321,-22.8663 865.1917,-23.9392 874.1005,-29.6735 875.7321,-22.8663"/>
+</g>
+<!-- 4&#45;&gt;9 -->
+<g id="edge24" class="edge">
+<title>4&#45;&gt;9</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M910,-143.8314C910,-136.131 910,-126.9743 910,-118.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="913.5001,-118.4132 910,-108.4133 906.5001,-118.4133 913.5001,-118.4132"/>
+</g>
+<!-- 4&#45;&gt;10 -->
+<g id="edge26" class="edge">
+<title>4&#45;&gt;10</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M873.6627,-143.8314C854.6604,-134.3302 831.2242,-122.6121 811.0748,-112.5374"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="812.5855,-109.3797 802.076,-108.038 809.455,-115.6407 812.5855,-109.3797"/>
+=======
 <path fill="none" stroke="grey" stroke-width="2" d="M682.26,-215.99C696.54,-207.05 712.3,-194.85 722.5,-180 750.73,-138.9 760.44,-80.17 763.77,-46.17"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="767.27,-46.32 764.64,-36.06 760.3,-45.72 767.27,-46.32"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 5 -->
 <g id="node6" class="node">
 <title>5</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#9fd856" stroke-width="2" d="M713,-254.5C713,-254.5 571,-254.5 571,-254.5 565,-254.5 559,-248.5 559,-242.5 559,-242.5 559,-230.5 559,-230.5 559,-224.5 565,-218.5 571,-218.5 571,-218.5 713,-218.5 713,-218.5 719,-218.5 725,-224.5 725,-230.5 725,-230.5 725,-242.5 725,-242.5 725,-248.5 719,-254.5 713,-254.5"/>
+<text text-anchor="middle" x="642" y="-234" font-family="sans" font-size="10.00" fill="#000000">pe_genome_quantification_kallisto</text>
+=======
 <path fill="none" stroke="#d85656" stroke-width="2" d="M905,-252C905,-252 742,-252 742,-252 736,-252 730,-246 730,-240 730,-240 730,-228 730,-228 730,-222 736,-216 742,-216 742,-216 905,-216 905,-216 911,-216 917,-222 917,-228 917,-228 917,-240 917,-240 917,-246 911,-252 905,-252"/>
 <text text-anchor="middle" x="823.5" y="-231.5" font-family="sans" font-size="10.00">pe_genome_quantification_kallisto</text>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 5&#45;&gt;0 -->
 <g id="edge5" class="edge">
 <title>5&#45;&gt;0</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M642.0581,-218.355C643.1484,-185.0077 650.1999,-113.5905 689,-72 718.2563,-40.6397 767.1257,-27.449 800.8774,-21.9281"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="801.4514,-25.3813 810.8283,-20.4493 800.4224,-18.4573 801.4514,-25.3813"/>
+=======
 <path fill="none" stroke="grey" stroke-width="2" d="M818.57,-215.83C815.61,-205.47 811.8,-191.99 808.5,-180 795.61,-133.13 781.12,-78.44 772.68,-46.38"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="775.99,-45.2 770.06,-36.41 769.22,-46.98 775.99,-45.2"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 6 -->
 <g id="node7" class="node">
 <title>6</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#5682d8" stroke-width="2" d="M1107,-254.5C1107,-254.5 981,-254.5 981,-254.5 975,-254.5 969,-248.5 969,-242.5 969,-242.5 969,-230.5 969,-230.5 969,-224.5 975,-218.5 981,-218.5 981,-218.5 1107,-218.5 1107,-218.5 1113,-218.5 1119,-224.5 1119,-230.5 1119,-230.5 1119,-242.5 1119,-242.5 1119,-248.5 1113,-254.5 1107,-254.5"/>
+<text text-anchor="middle" x="1044" y="-234" font-family="sans" font-size="10.00" fill="#000000">genome_quantification_kallisto</text>
+=======
 <path fill="none" stroke="#56d8d8" stroke-width="2" d="M1093.5,-252C1093.5,-252 947.5,-252 947.5,-252 941.5,-252 935.5,-246 935.5,-240 935.5,-240 935.5,-228 935.5,-228 935.5,-222 941.5,-216 947.5,-216 947.5,-216 1093.5,-216 1093.5,-216 1099.5,-216 1105.5,-222 1105.5,-228 1105.5,-228 1105.5,-240 1105.5,-240 1105.5,-246 1099.5,-252 1093.5,-252"/>
 <text text-anchor="middle" x="1020.5" y="-231.5" font-family="sans" font-size="10.00">genome_quantification_kallisto</text>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 6&#45;&gt;0 -->
 <g id="edge6" class="edge">
 <title>6&#45;&gt;0</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1044.9479,-218.2962C1045.6618,-184.852 1042.2588,-113.2817 1004,-72 986.4067,-53.0166 918.3915,-35.3258 875.0709,-25.6536"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="875.684,-22.205 865.1668,-23.4854 874.187,-29.0431 875.684,-22.205"/>
+=======
 <path fill="none" stroke="grey" stroke-width="2" d="M938.16,-215.95C898.46,-206.3 856.28,-193.49 841.5,-180 803.34,-145.17 821.8,-118.11 798.5,-72 793.86,-62.81 788.11,-53.14 782.73,-44.62"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="785.67,-42.72 777.31,-36.21 779.79,-46.51 785.67,-42.72"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 7 -->
 <g id="node8" class="node">
 <title>7</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#56d882" stroke-width="2" d="M1211,-108C1211,-108 1123,-108 1123,-108 1117,-108 1111,-102 1111,-96 1111,-96 1111,-84 1111,-84 1111,-78 1117,-72 1123,-72 1123,-72 1211,-72 1211,-72 1217,-72 1223,-78 1223,-84 1223,-84 1223,-96 1223,-96 1223,-102 1217,-108 1211,-108"/>
+<text text-anchor="middle" x="1167" y="-93" font-family="sans" font-size="10.00" fill="#000000">calculate_TIN_scores</text>
+<text text-anchor="middle" x="1167" y="-82" font-family="sans" font-size="10.00" fill="#000000">seqmode: paired_end</text>
+=======
 <path fill="none" stroke="#56d8c1" stroke-width="2" d="M1006.5,-108C1006.5,-108 908.5,-108 908.5,-108 902.5,-108 896.5,-102 896.5,-96 896.5,-96 896.5,-84 896.5,-84 896.5,-78 902.5,-72 908.5,-72 908.5,-72 1006.5,-72 1006.5,-72 1012.5,-72 1018.5,-78 1018.5,-84 1018.5,-84 1018.5,-96 1018.5,-96 1018.5,-102 1012.5,-108 1006.5,-108"/>
 <text text-anchor="middle" x="957.5" y="-93" font-family="sans" font-size="10.00">calculate_TIN_scores</text>
 <text text-anchor="middle" x="957.5" y="-82" font-family="sans" font-size="10.00">seqmode: paired_end</text>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 7&#45;&gt;0 -->
 <g id="edge7" class="edge">
 <title>7&#45;&gt;0</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1110.8167,-77.7046C1043.6075,-62.9962 932.9733,-38.7844 875.4162,-26.1884"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="875.8263,-22.6953 865.3092,-23.9765 874.3297,-29.5335 875.8263,-22.6953"/>
+=======
 <path fill="none" stroke="grey" stroke-width="2" d="M910.53,-71.88C877.17,-59.71 833.02,-43.62 802.23,-32.39"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="803.32,-29.06 792.73,-28.93 800.93,-35.64 803.32,-29.06"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 8 -->
 <g id="node9" class="node">
 <title>8</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#56d882" stroke-width="2" d="M1397,-108C1397,-108 1309,-108 1309,-108 1303,-108 1297,-102 1297,-96 1297,-96 1297,-84 1297,-84 1297,-78 1303,-72 1309,-72 1309,-72 1397,-72 1397,-72 1403,-72 1409,-78 1409,-84 1409,-84 1409,-96 1409,-96 1409,-102 1403,-108 1397,-108"/>
+<text text-anchor="middle" x="1353" y="-93" font-family="sans" font-size="10.00" fill="#000000">calculate_TIN_scores</text>
+<text text-anchor="middle" x="1353" y="-82" font-family="sans" font-size="10.00" fill="#000000">seqmode: single_end</text>
+=======
 <path fill="none" stroke="#56d8c1" stroke-width="2" d="M1210.5,-108C1210.5,-108 1114.5,-108 1114.5,-108 1108.5,-108 1102.5,-102 1102.5,-96 1102.5,-96 1102.5,-84 1102.5,-84 1102.5,-78 1108.5,-72 1114.5,-72 1114.5,-72 1210.5,-72 1210.5,-72 1216.5,-72 1222.5,-78 1222.5,-84 1222.5,-84 1222.5,-96 1222.5,-96 1222.5,-102 1216.5,-108 1210.5,-108"/>
 <text text-anchor="middle" x="1162.5" y="-93" font-family="sans" font-size="10.00">calculate_TIN_scores</text>
 <text text-anchor="middle" x="1162.5" y="-82" font-family="sans" font-size="10.00">seqmode: single_end</text>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 8&#45;&gt;0 -->
 <g id="edge8" class="edge">
 <title>8&#45;&gt;0</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1296.9948,-81.5319C1276.5482,-78.4764 1253.2348,-75.0345 1232,-72 1101.0037,-53.2802 945.3116,-32.3227 875.3277,-22.9708"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="875.6176,-19.4786 865.2424,-21.6242 874.6912,-26.417 875.6176,-19.4786"/>
+</g>
+<!-- 9&#45;&gt;0 -->
+<g id="edge9" class="edge">
+<title>9&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M891.8314,-71.8314C883.2848,-63.2848 872.9443,-52.9443 863.6198,-43.6198"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="865.9592,-41.0095 856.4133,-36.4133 861.0095,-45.9592 865.9592,-41.0095"/>
+</g>
+<!-- 10&#45;&gt;0 -->
+<g id="edge10" class="edge">
+<title>10&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M784.1686,-71.8314C792.7152,-63.2848 803.0557,-52.9443 812.3802,-43.6198"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="814.9905,-45.9592 819.5867,-36.4133 810.0408,-41.0095 814.9905,-45.9592"/>
+=======
 <path fill="none" stroke="grey" stroke-width="2" d="M1102.2,-78.37C1019.06,-63.71 871.68,-37.72 802.86,-25.59"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="803.35,-22.12 792.9,-23.83 802.14,-29.01 803.35,-22.12"/>
 </g>
@@ -164,10 +311,39 @@
 <title>10&#45;&gt;4</title>
 <path fill="none" stroke="grey" stroke-width="2" d="M545.93,-287.88C564.79,-278.25 587.57,-266.62 606.95,-256.72"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="608.56,-259.83 615.88,-252.17 605.38,-253.6 608.56,-259.83"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 11 -->
 <g id="node12" class="node">
 <title>11</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M831,-331.5C831,-331.5 719,-331.5 719,-331.5 713,-331.5 707,-325.5 707,-319.5 707,-319.5 707,-307.5 707,-307.5 707,-301.5 713,-295.5 719,-295.5 719,-295.5 831,-295.5 831,-295.5 837,-295.5 843,-301.5 843,-307.5 843,-307.5 843,-319.5 843,-319.5 843,-325.5 837,-331.5 831,-331.5"/>
+<text text-anchor="middle" x="775" y="-311" font-family="sans" font-size="10.00" fill="#000000">pe_remove_polya_cutadapt</text>
+</g>
+<!-- 11&#45;&gt;3 -->
+<g id="edge11" class="edge">
+<title>11&#45;&gt;3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M773.9144,-295.2256C772.367,-269.1777 769.5129,-221.1339 767.6881,-190.4171"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="771.1764,-190.1141 767.0895,-180.3393 764.1887,-190.5292 771.1764,-190.1141"/>
+</g>
+<!-- 11&#45;&gt;5 -->
+<g id="edge15" class="edge">
+<title>11&#45;&gt;5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M743.8174,-295.4469C725.4409,-284.8079 701.9954,-271.2342 682.2359,-259.7945"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="683.856,-256.6882 673.4481,-254.7068 680.3487,-262.7462 683.856,-256.6882"/>
+</g>
+<!-- 20 -->
+<g id="node21" class="node">
+<title>20</title>
+<path fill="none" stroke="#d89c56" stroke-width="2" d="M1238.5,-254.5C1238.5,-254.5 1149.5,-254.5 1149.5,-254.5 1143.5,-254.5 1137.5,-248.5 1137.5,-242.5 1137.5,-242.5 1137.5,-230.5 1137.5,-230.5 1137.5,-224.5 1143.5,-218.5 1149.5,-218.5 1149.5,-218.5 1238.5,-218.5 1238.5,-218.5 1244.5,-218.5 1250.5,-224.5 1250.5,-230.5 1250.5,-230.5 1250.5,-242.5 1250.5,-242.5 1250.5,-248.5 1244.5,-254.5 1238.5,-254.5"/>
+<text text-anchor="middle" x="1194" y="-234" font-family="sans" font-size="10.00" fill="#000000">pe_map_genome_star</text>
+</g>
+<!-- 11&#45;&gt;20 -->
+<g id="edge32" class="edge">
+<title>11&#45;&gt;20</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M843.2317,-305.51C912.5812,-296.7283 1023.1571,-280.9101 1127.8347,-256.8674"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1128.6726,-260.266 1137.6197,-254.5916 1127.0867,-253.448 1128.6726,-260.266"/>
+=======
 <path fill="none" stroke="#bed856" stroke-width="2" d="M1080.5,-326.5C1080.5,-326.5 970.5,-326.5 970.5,-326.5 964.5,-326.5 958.5,-320.5 958.5,-314.5 958.5,-314.5 958.5,-302.5 958.5,-302.5 958.5,-296.5 964.5,-290.5 970.5,-290.5 970.5,-290.5 1080.5,-290.5 1080.5,-290.5 1086.5,-290.5 1092.5,-296.5 1092.5,-302.5 1092.5,-302.5 1092.5,-314.5 1092.5,-314.5 1092.5,-320.5 1086.5,-326.5 1080.5,-326.5"/>
 <text text-anchor="middle" x="1025.5" y="-306" font-family="sans" font-size="10.00">remove_polya_cutadapt</text>
 </g>
@@ -194,10 +370,29 @@
 <title>11&#45;&gt;19</title>
 <path fill="none" stroke="grey" stroke-width="2" d="M1092.69,-292.13C1136.95,-281.86 1196.4,-267.78 1257.02,-252.34"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="1257.94,-255.72 1266.76,-249.85 1256.21,-248.94 1257.94,-255.72"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 12 -->
 <g id="node13" class="node">
 <title>12</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#d88556" stroke-width="2" d="M900.5,-257C900.5,-257 799.5,-257 799.5,-257 793.5,-257 787.5,-251 787.5,-245 787.5,-245 787.5,-228 787.5,-228 787.5,-222 793.5,-216 799.5,-216 799.5,-216 900.5,-216 900.5,-216 906.5,-216 912.5,-222 912.5,-228 912.5,-228 912.5,-245 912.5,-245 912.5,-251 906.5,-257 900.5,-257"/>
+<text text-anchor="middle" x="850" y="-245" font-family="sans" font-size="10.00" fill="#000000">create_index_salmon</text>
+<text text-anchor="middle" x="850" y="-234" font-family="sans" font-size="10.00" fill="#000000">kmer: 31</text>
+<text text-anchor="middle" x="850" y="-223" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text>
+</g>
+<!-- 12&#45;&gt;3 -->
+<g id="edge12" class="edge">
+<title>12&#45;&gt;3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M826.6013,-215.7476C816.5434,-206.8272 804.7021,-196.3251 794.1676,-186.982"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="796.2217,-184.1255 786.4178,-180.1087 791.5769,-189.3626 796.2217,-184.1255"/>
+</g>
+<!-- 12&#45;&gt;4 -->
+<g id="edge14" class="edge">
+<title>12&#45;&gt;4</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M866.7133,-215.7476C873.6158,-207.177 881.6942,-197.1463 888.9908,-188.0864"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="891.8693,-190.0923 895.4158,-180.1087 886.4175,-185.7016 891.8693,-190.0923"/>
+=======
 <path fill="none" stroke="#d6d856" stroke-width="2" d="M923,-326.5C923,-326.5 808,-326.5 808,-326.5 802,-326.5 796,-320.5 796,-314.5 796,-314.5 796,-302.5 796,-302.5 796,-296.5 802,-290.5 808,-290.5 808,-290.5 923,-290.5 923,-290.5 929,-290.5 935,-296.5 935,-302.5 935,-302.5 935,-314.5 935,-314.5 935,-320.5 929,-326.5 923,-326.5"/>
 <text text-anchor="middle" x="865.5" y="-311.5" font-family="sans" font-size="10.00">create_index_kallisto</text>
 <text text-anchor="middle" x="865.5" y="-300.5" font-family="sans" font-size="10.00">organism: homo_sapiens</text>
@@ -213,10 +408,39 @@
 <title>12&#45;&gt;6</title>
 <path fill="none" stroke="grey" stroke-width="2" d="M902.23,-290.32C923.95,-280.16 951.64,-267.21 974.76,-256.39"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="976.46,-259.47 984.03,-252.06 973.49,-253.12 976.46,-259.47"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 13 -->
 <g id="node14" class="node">
 <title>13</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#56d86b" stroke-width="2" d="M1096,-331.5C1096,-331.5 1000,-331.5 1000,-331.5 994,-331.5 988,-325.5 988,-319.5 988,-319.5 988,-307.5 988,-307.5 988,-301.5 994,-295.5 1000,-295.5 1000,-295.5 1096,-295.5 1096,-295.5 1102,-295.5 1108,-301.5 1108,-307.5 1108,-307.5 1108,-319.5 1108,-319.5 1108,-325.5 1102,-331.5 1096,-331.5"/>
+<text text-anchor="middle" x="1048" y="-311" font-family="sans" font-size="10.00" fill="#000000">remove_polya_cutadapt</text>
+</g>
+<!-- 13&#45;&gt;4 -->
+<g id="edge13" class="edge">
+<title>13&#45;&gt;4</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1011.0415,-295.4627C993.9738,-285.8012 974.3586,-272.6543 960,-257 941.9194,-237.2879 928.397,-209.8206 920.0045,-189.4885"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="923.2393,-188.151 916.2991,-180.1457 916.7323,-190.7317 923.2393,-188.151"/>
+</g>
+<!-- 13&#45;&gt;6 -->
+<g id="edge17" class="edge">
+<title>13&#45;&gt;6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1047.0521,-295.2521C1046.5788,-286.1422 1045.9957,-274.9174 1045.4664,-264.7282"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1048.9553,-264.4219 1044.9411,-254.6169 1041.9647,-264.7851 1048.9553,-264.4219"/>
+</g>
+<!-- 21 -->
+<g id="node22" class="node">
+<title>21</title>
+<path fill="none" stroke="#56d8c9" stroke-width="2" d="M1353.5,-254.5C1353.5,-254.5 1280.5,-254.5 1280.5,-254.5 1274.5,-254.5 1268.5,-248.5 1268.5,-242.5 1268.5,-242.5 1268.5,-230.5 1268.5,-230.5 1268.5,-224.5 1274.5,-218.5 1280.5,-218.5 1280.5,-218.5 1353.5,-218.5 1353.5,-218.5 1359.5,-218.5 1365.5,-224.5 1365.5,-230.5 1365.5,-230.5 1365.5,-242.5 1365.5,-242.5 1365.5,-248.5 1359.5,-254.5 1353.5,-254.5"/>
+<text text-anchor="middle" x="1317" y="-234" font-family="sans" font-size="10.00" fill="#000000">map_genome_star</text>
+</g>
+<!-- 13&#45;&gt;21 -->
+<g id="edge34" class="edge">
+<title>13&#45;&gt;21</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1108.243,-298.8927C1148.5556,-288.7854 1202.9425,-274.5127 1258.6038,-257.3403"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1259.7659,-260.6443 1268.2744,-254.3311 1257.686,-253.9604 1259.7659,-260.6443"/>
+=======
 <path fill="none" stroke="#70d856" stroke-width="2" d="M1052,-180C1052,-180 863,-180 863,-180 857,-180 851,-174 851,-168 851,-168 851,-156 851,-156 851,-150 857,-144 863,-144 863,-144 1052,-144 1052,-144 1058,-144 1064,-150 1064,-156 1064,-156 1064,-168 1064,-168 1064,-174 1058,-180 1052,-180"/>
 <text text-anchor="middle" x="957.5" y="-159.5" font-family="sans" font-size="10.00">pe_index_genomic_alignment_samtools</text>
 </g>
@@ -225,10 +449,28 @@
 <title>13&#45;&gt;7</title>
 <path fill="none" stroke="grey" stroke-width="2" d="M957.5,-143.7C957.5,-135.98 957.5,-126.71 957.5,-118.11"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="961,-118.1 957.5,-108.1 954,-118.1 961,-118.1"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 14 -->
 <g id="node15" class="node">
 <title>14</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#59d856" stroke-width="2" d="M676.5,-331.5C676.5,-331.5 575.5,-331.5 575.5,-331.5 569.5,-331.5 563.5,-325.5 563.5,-319.5 563.5,-319.5 563.5,-307.5 563.5,-307.5 563.5,-301.5 569.5,-295.5 575.5,-295.5 575.5,-295.5 676.5,-295.5 676.5,-295.5 682.5,-295.5 688.5,-301.5 688.5,-307.5 688.5,-307.5 688.5,-319.5 688.5,-319.5 688.5,-325.5 682.5,-331.5 676.5,-331.5"/>
+<text text-anchor="middle" x="626" y="-316.5" font-family="sans" font-size="10.00" fill="#000000">create_index_kallisto</text>
+<text text-anchor="middle" x="626" y="-305.5" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text>
+</g>
+<!-- 14&#45;&gt;5 -->
+<g id="edge16" class="edge">
+<title>14&#45;&gt;5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M629.7918,-295.2521C631.6847,-286.1422 634.0172,-274.9174 636.1344,-264.7282"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="639.6277,-265.1199 638.2354,-254.6169 632.7741,-263.6957 639.6277,-265.1199"/>
+</g>
+<!-- 14&#45;&gt;6 -->
+<g id="edge18" class="edge">
+<title>14&#45;&gt;6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M687.5424,-295.4609C691.0701,-294.5881 694.5742,-293.7602 698,-293 796.4385,-271.156 822.5021,-273.3546 922,-257 933.9567,-255.0347 946.5687,-252.9399 958.9664,-250.8683"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="959.5615,-254.3174 968.8465,-249.2147 958.4059,-247.4135 959.5615,-254.3174"/>
+=======
 <path fill="none" stroke="#56c1d8" stroke-width="2" d="M1230.5,-180C1230.5,-180 1094.5,-180 1094.5,-180 1088.5,-180 1082.5,-174 1082.5,-168 1082.5,-168 1082.5,-156 1082.5,-156 1082.5,-150 1088.5,-144 1094.5,-144 1094.5,-144 1230.5,-144 1230.5,-144 1236.5,-144 1242.5,-150 1242.5,-156 1242.5,-156 1242.5,-168 1242.5,-168 1242.5,-174 1236.5,-180 1230.5,-180"/>
 <text text-anchor="middle" x="1162.5" y="-159.5" font-family="sans" font-size="10.00">extract_transcripts_as_bed12</text>
 </g>
@@ -243,10 +485,21 @@
 <title>14&#45;&gt;8</title>
 <path fill="none" stroke="grey" stroke-width="2" d="M1162.5,-143.7C1162.5,-135.98 1162.5,-126.71 1162.5,-118.11"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="1166,-118.1 1162.5,-108.1 1159,-118.1 1166,-118.1"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 15 -->
 <g id="node16" class="node">
 <title>15</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#d8b456" stroke-width="2" d="M1250,-180C1250,-180 1084,-180 1084,-180 1078,-180 1072,-174 1072,-168 1072,-168 1072,-156 1072,-156 1072,-150 1078,-144 1084,-144 1084,-144 1250,-144 1250,-144 1256,-144 1262,-150 1262,-156 1262,-156 1262,-168 1262,-168 1262,-174 1256,-180 1250,-180"/>
+<text text-anchor="middle" x="1167" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">pe_index_genomic_alignment_samtools</text>
+</g>
+<!-- 15&#45;&gt;7 -->
+<g id="edge19" class="edge">
+<title>15&#45;&gt;7</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1167,-143.8314C1167,-136.131 1167,-126.9743 1167,-118.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1170.5001,-118.4132 1167,-108.4133 1163.5001,-118.4133 1170.5001,-118.4132"/>
+=======
 <path fill="none" stroke="#56a2d8" stroke-width="2" d="M1444.5,-180C1444.5,-180 1272.5,-180 1272.5,-180 1266.5,-180 1260.5,-174 1260.5,-168 1260.5,-168 1260.5,-156 1260.5,-156 1260.5,-150 1266.5,-144 1272.5,-144 1272.5,-144 1444.5,-144 1444.5,-144 1450.5,-144 1456.5,-150 1456.5,-156 1456.5,-156 1456.5,-168 1456.5,-168 1456.5,-174 1450.5,-180 1444.5,-180"/>
 <text text-anchor="middle" x="1358.5" y="-159.5" font-family="sans" font-size="10.00">index_genomic_alignment_samtools</text>
 </g>
@@ -255,10 +508,27 @@
 <title>15&#45;&gt;8</title>
 <path fill="none" stroke="grey" stroke-width="2" d="M1310.8,-143.97C1283.42,-134.19 1248.84,-121.84 1219.97,-111.52"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="1221,-108.18 1210.41,-108.11 1218.65,-114.77 1221,-108.18"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 16 -->
 <g id="node17" class="node">
 <title>16</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#56c9d8" stroke-width="2" d="M1413.5,-180C1413.5,-180 1292.5,-180 1292.5,-180 1286.5,-180 1280.5,-174 1280.5,-168 1280.5,-168 1280.5,-156 1280.5,-156 1280.5,-150 1286.5,-144 1292.5,-144 1292.5,-144 1413.5,-144 1413.5,-144 1419.5,-144 1425.5,-150 1425.5,-156 1425.5,-156 1425.5,-168 1425.5,-168 1425.5,-174 1419.5,-180 1413.5,-180"/>
+<text text-anchor="middle" x="1353" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">extract_transcripts_as_bed12</text>
+</g>
+<!-- 16&#45;&gt;7 -->
+<g id="edge20" class="edge">
+<title>16&#45;&gt;7</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1306.0643,-143.8314C1280.8563,-134.0734 1249.6074,-121.977 1223.1209,-111.7242"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1224.1873,-108.384 1213.5981,-108.038 1221.6603,-114.912 1224.1873,-108.384"/>
+</g>
+<!-- 16&#45;&gt;8 -->
+<g id="edge22" class="edge">
+<title>16&#45;&gt;8</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1353,-143.8314C1353,-136.131 1353,-126.9743 1353,-118.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1356.5001,-118.4132 1353,-108.4133 1349.5001,-118.4133 1356.5001,-118.4132"/>
+=======
 <path fill="none" stroke="#568ad8" stroke-width="2" d="M835,-401C835,-401 534,-401 534,-401 528,-401 522,-395 522,-389 522,-389 522,-377 522,-377 522,-371 528,-365 534,-365 534,-365 835,-365 835,-365 841,-365 847,-371 847,-377 847,-377 847,-389 847,-389 847,-395 841,-401 835,-401"/>
 <text text-anchor="middle" x="684.5" y="-386" font-family="sans" font-size="10.00">pe_remove_adapters_cutadapt</text>
 <text text-anchor="middle" x="684.5" y="-375" font-family="sans" font-size="10.00">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text>
@@ -268,10 +538,79 @@
 <title>16&#45;&gt;9</title>
 <path fill="none" stroke="grey" stroke-width="2" d="M686.16,-364.82C686.97,-356.42 687.96,-346.12 688.88,-336.69"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="692.38,-336.85 689.85,-326.56 685.41,-336.18 692.38,-336.85"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 <!-- 17 -->
 <g id="node18" class="node">
 <title>17</title>
+<<<<<<< HEAD
+<path fill="none" stroke="#56d8b1" stroke-width="2" d="M1606,-180C1606,-180 1456,-180 1456,-180 1450,-180 1444,-174 1444,-168 1444,-168 1444,-156 1444,-156 1444,-150 1450,-144 1456,-144 1456,-144 1606,-144 1606,-144 1612,-144 1618,-150 1618,-156 1618,-156 1618,-168 1618,-168 1618,-174 1612,-180 1606,-180"/>
+<text text-anchor="middle" x="1531" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">index_genomic_alignment_samtools</text>
+</g>
+<!-- 17&#45;&gt;8 -->
+<g id="edge21" class="edge">
+<title>17&#45;&gt;8</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1486.0831,-143.8314C1462.065,-134.1162 1432.3166,-122.0831 1407.0408,-111.8592"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1408.1767,-108.5432 1397.5939,-108.038 1405.5518,-115.0325 1408.1767,-108.5432"/>
+</g>
+<!-- 18 -->
+<g id="node19" class="node">
+<title>18</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M887,-406C887,-406 619,-406 619,-406 613,-406 607,-400 607,-394 607,-394 607,-382 607,-382 607,-376 613,-370 619,-370 619,-370 887,-370 887,-370 893,-370 899,-376 899,-382 899,-382 899,-394 899,-394 899,-400 893,-406 887,-406"/>
+<text text-anchor="middle" x="753" y="-391" font-family="sans" font-size="10.00" fill="#000000">pe_remove_adapters_cutadapt</text>
+<text text-anchor="middle" x="753" y="-380" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_paired_synthetic_10_reads_paired</text>
+</g>
+<!-- 18&#45;&gt;11 -->
+<g id="edge27" class="edge">
+<title>18&#45;&gt;11</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M758.3256,-369.9656C760.8471,-361.427 763.9163,-351.0333 766.731,-341.502"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="770.1717,-342.2084 769.6472,-331.6265 763.4583,-340.2258 770.1717,-342.2084"/>
+</g>
+<!-- 19 -->
+<g id="node20" class="node">
+<title>19</title>
+<path fill="none" stroke="#d85656" stroke-width="2" d="M1209,-406C1209,-406 929,-406 929,-406 923,-406 917,-400 917,-394 917,-394 917,-382 917,-382 917,-376 923,-370 929,-370 929,-370 1209,-370 1209,-370 1215,-370 1221,-376 1221,-382 1221,-382 1221,-394 1221,-394 1221,-400 1215,-406 1209,-406"/>
+<text text-anchor="middle" x="1069" y="-391" font-family="sans" font-size="10.00" fill="#000000">remove_adapters_cutadapt</text>
+<text text-anchor="middle" x="1069" y="-380" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text>
+</g>
+<!-- 19&#45;&gt;13 -->
+<g id="edge28" class="edge">
+<title>19&#45;&gt;13</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1063.9165,-369.9656C1061.5096,-361.427 1058.5798,-351.0333 1055.8932,-341.502"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1059.1914,-340.3018 1053.1095,-331.6265 1052.4539,-342.201 1059.1914,-340.3018"/>
+</g>
+<!-- 20&#45;&gt;15 -->
+<g id="edge29" class="edge">
+<title>20&#45;&gt;15</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1187.4641,-218.4656C1184.3366,-209.8361 1180.5224,-199.3119 1177.0382,-189.6981"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1180.2673,-188.3356 1173.5693,-180.1265 1173.6861,-190.7207 1180.2673,-188.3356"/>
+</g>
+<!-- 21&#45;&gt;17 -->
+<g id="edge30" class="edge">
+<title>21&#45;&gt;17</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1365.5599,-219.5948C1396.4256,-208.8495 1436.6502,-194.8461 1469.7072,-183.3379"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1470.9779,-186.6017 1479.2712,-180.0084 1468.6764,-179.9908 1470.9779,-186.6017"/>
+</g>
+<!-- 22 -->
+<g id="node23" class="node">
+<title>22</title>
+<path fill="none" stroke="#56d89a" stroke-width="2" d="M1305.5,-334C1305.5,-334 1204.5,-334 1204.5,-334 1198.5,-334 1192.5,-328 1192.5,-322 1192.5,-322 1192.5,-305 1192.5,-305 1192.5,-299 1198.5,-293 1204.5,-293 1204.5,-293 1305.5,-293 1305.5,-293 1311.5,-293 1317.5,-299 1317.5,-305 1317.5,-305 1317.5,-322 1317.5,-322 1317.5,-328 1311.5,-334 1305.5,-334"/>
+<text text-anchor="middle" x="1255" y="-322" font-family="sans" font-size="10.00" fill="#000000">create_index_star</text>
+<text text-anchor="middle" x="1255" y="-311" font-family="sans" font-size="10.00" fill="#000000">index_size: 75</text>
+<text text-anchor="middle" x="1255" y="-300" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text>
+</g>
+<!-- 22&#45;&gt;20 -->
+<g id="edge31" class="edge">
+<title>22&#45;&gt;20</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1238.6531,-292.8654C1231.2641,-283.5383 1222.4511,-272.4136 1214.6144,-262.5214"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1217.2669,-260.2333 1208.3138,-254.5683 1211.7801,-264.5801 1217.2669,-260.2333"/>
+</g>
+<!-- 22&#45;&gt;21 -->
+<g id="edge33" class="edge">
+<title>22&#45;&gt;21</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1271.6149,-292.8654C1279.125,-283.5383 1288.0825,-272.4136 1296.0477,-262.5214"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1298.906,-264.5523 1302.4515,-254.5683 1293.4538,-260.1621 1298.906,-264.5523"/>
+=======
 <path fill="none" stroke="#a7d856" stroke-width="2" d="M1190,-401C1190,-401 877,-401 877,-401 871,-401 865,-395 865,-389 865,-389 865,-377 865,-377 865,-371 871,-365 877,-365 877,-365 1190,-365 1190,-365 1196,-365 1202,-371 1202,-377 1202,-377 1202,-389 1202,-389 1202,-395 1196,-401 1190,-401"/>
 <text text-anchor="middle" x="1033.5" y="-386" font-family="sans" font-size="10.00">remove_adapters_cutadapt</text>
 <text text-anchor="middle" x="1033.5" y="-375" font-family="sans" font-size="10.00">sample: synthetic_10_reads_mate_1_synthetic_10_reads_mate_1</text>
@@ -313,6 +652,7 @@
 <title>20&#45;&gt;19</title>
 <path fill="none" stroke="grey" stroke-width="2" d="M1271.81,-287.69C1279.8,-279.04 1289.25,-268.81 1297.7,-259.68"/>
 <polygon fill="grey" stroke="grey" stroke-width="2" points="1300.28,-262.04 1304.49,-252.32 1295.14,-257.29 1300.28,-262.04"/>
+>>>>>>> 641f2cbb4025df946ad340a805cb788434b3ba68
 </g>
 </g>
 </svg>
diff --git a/images/workflow_dag.svg b/images/workflow_dag.svg
new file mode 100644
index 0000000..aed6714
--- /dev/null
+++ b/images/workflow_dag.svg
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: snakemake_dag Pages: 1 -->
+<svg width="1510pt" height="337pt"
+ viewBox="0.00 0.00 1510.02 337.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 333)">
+<title>snakemake_dag</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-333 1506.0203,-333 1506.0203,4 -4,4"/>
+<!-- 0 -->
+<g id="node1" class="node">
+<title>0</title>
+<path fill="none" stroke="#9fd856" stroke-width="2" d="M991,-36C991,-36 961,-36 961,-36 955,-36 949,-30 949,-24 949,-24 949,-12 949,-12 949,-6 955,0 961,0 961,0 991,0 991,0 997,0 1003,-6 1003,-12 1003,-12 1003,-24 1003,-24 1003,-30 997,-36 991,-36"/>
+<text text-anchor="middle" x="976" 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="#56b1d8" stroke-width="2" d="M158,-108C158,-108 12,-108 12,-108 6,-108 0,-102 0,-96 0,-96 0,-84 0,-84 0,-78 6,-72 12,-72 12,-72 158,-72 158,-72 164,-72 170,-78 170,-84 170,-84 170,-96 170,-96 170,-102 164,-108 158,-108"/>
+<text text-anchor="middle" x="85" y="-93" font-family="sans" font-size="10.00" fill="#000000">pe_fastqc</text>
+<text text-anchor="middle" x="85" y="-82" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_paired</text>
+</g>
+<!-- 1&#45;&gt;0 -->
+<g id="edge1" class="edge">
+<title>1&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M170.2331,-73.2105C173.1873,-72.778 176.1162,-72.3724 179,-72 469.8071,-34.4465 823.8993,-22.0899 938.3813,-18.9256"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="938.8,-22.4157 948.702,-18.6475 938.6114,-15.4182 938.8,-22.4157"/>
+</g>
+<!-- 2 -->
+<g id="node3" class="node">
+<title>2</title>
+<path fill="none" stroke="#d85656" stroke-width="2" d="M352,-108C352,-108 200,-108 200,-108 194,-108 188,-102 188,-96 188,-96 188,-84 188,-84 188,-78 194,-72 200,-72 200,-72 352,-72 352,-72 358,-72 364,-78 364,-84 364,-84 364,-96 364,-96 364,-102 358,-108 352,-108"/>
+<text text-anchor="middle" x="276" y="-93" font-family="sans" font-size="10.00" fill="#000000">fastqc</text>
+<text text-anchor="middle" x="276" y="-82" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_mate_1</text>
+</g>
+<!-- 2&#45;&gt;0 -->
+<g id="edge2" class="edge">
+<title>2&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M364.2307,-73.2628C367.186,-72.8186 370.1153,-72.3959 373,-72 586.0653,-42.757 843.7556,-25.763 938.6211,-20.119"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="939.0748,-23.5984 948.8519,-19.517 938.6636,-16.6105 939.0748,-23.5984"/>
+</g>
+<!-- 3 -->
+<g id="node4" class="node">
+<title>3</title>
+<path fill="none" stroke="#56d86b" stroke-width="2" d="M560,-108C560,-108 394,-108 394,-108 388,-108 382,-102 382,-96 382,-96 382,-84 382,-84 382,-78 388,-72 394,-72 394,-72 560,-72 560,-72 566,-72 572,-78 572,-84 572,-84 572,-96 572,-96 572,-102 566,-108 560,-108"/>
+<text text-anchor="middle" x="477" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">pe_index_genomic_alignment_samtools</text>
+</g>
+<!-- 3&#45;&gt;0 -->
+<g id="edge3" class="edge">
+<title>3&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M572.1926,-73.3851C575.1613,-72.9115 578.1027,-72.4486 581,-72 712.0945,-51.7009 868.2982,-31.5289 938.5332,-22.6716"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="939.17,-26.1191 948.655,-21.3985 938.2964,-19.1739 939.17,-26.1191"/>
+</g>
+<!-- 4 -->
+<g id="node5" class="node">
+<title>4</title>
+<path fill="none" stroke="#b6d856" stroke-width="2" d="M752,-108C752,-108 602,-108 602,-108 596,-108 590,-102 590,-96 590,-96 590,-84 590,-84 590,-78 596,-72 602,-72 602,-72 752,-72 752,-72 758,-72 764,-78 764,-84 764,-84 764,-96 764,-96 764,-102 758,-108 752,-108"/>
+<text text-anchor="middle" x="677" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">index_genomic_alignment_samtools</text>
+</g>
+<!-- 4&#45;&gt;0 -->
+<g id="edge4" class="edge">
+<title>4&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M752.0644,-71.9243C811.5694,-57.5953 892.1971,-38.18 938.7061,-26.9805"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="939.7465,-30.3301 948.6492,-24.5861 938.1077,-23.5246 939.7465,-30.3301"/>
+</g>
+<!-- 5 -->
+<g id="node6" class="node">
+<title>5</title>
+<path fill="none" stroke="#70d856" stroke-width="2" d="M963.5,-180C963.5,-180 860.5,-180 860.5,-180 854.5,-180 848.5,-174 848.5,-168 848.5,-168 848.5,-156 848.5,-156 848.5,-150 854.5,-144 860.5,-144 860.5,-144 963.5,-144 963.5,-144 969.5,-144 975.5,-150 975.5,-156 975.5,-156 975.5,-168 975.5,-168 975.5,-174 969.5,-180 963.5,-180"/>
+<text text-anchor="middle" x="912" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">pe_quantification_salmon</text>
+</g>
+<!-- 5&#45;&gt;0 -->
+<g id="edge5" class="edge">
+<title>5&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M853.6599,-143.8856C836.9498,-135.6937 820.6591,-124.1172 811,-108 802.7751,-94.2759 801.6092,-84.9543 811,-72 826.1492,-51.1023 894.8804,-33.9967 938.718,-24.9629"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="939.6268,-28.3503 948.7408,-22.9481 938.2471,-21.4876 939.6268,-28.3503"/>
+</g>
+<!-- 9 -->
+<g id="node10" class="node">
+<title>9</title>
+<path fill="none" stroke="#d86e56" stroke-width="2" d="M960,-108C960,-108 832,-108 832,-108 826,-108 820,-102 820,-96 820,-96 820,-84 820,-84 820,-78 826,-72 832,-72 832,-72 960,-72 960,-72 966,-72 972,-78 972,-84 972,-84 972,-96 972,-96 972,-102 966,-108 960,-108"/>
+<text text-anchor="middle" x="896" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">pe_salmon_quantmerge_genes</text>
+</g>
+<!-- 5&#45;&gt;9 -->
+<g id="edge23" class="edge">
+<title>5&#45;&gt;9</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M907.9625,-143.8314C906.2513,-136.131 904.2165,-126.9743 902.3148,-118.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="905.6779,-117.4159 900.0918,-108.4133 898.8446,-118.9344 905.6779,-117.4159"/>
+</g>
+<!-- 11 -->
+<g id="node12" class="node">
+<title>11</title>
+<path fill="none" stroke="#56d8c9" stroke-width="2" d="M1109.5,-108C1109.5,-108 1002.5,-108 1002.5,-108 996.5,-108 990.5,-102 990.5,-96 990.5,-96 990.5,-84 990.5,-84 990.5,-78 996.5,-72 1002.5,-72 1002.5,-72 1109.5,-72 1109.5,-72 1115.5,-72 1121.5,-78 1121.5,-84 1121.5,-84 1121.5,-96 1121.5,-96 1121.5,-102 1115.5,-108 1109.5,-108"/>
+<text text-anchor="middle" x="1056" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">pe_salmon_quantmerge_tr</text>
+</g>
+<!-- 5&#45;&gt;11 -->
+<g id="edge25" class="edge">
+<title>5&#45;&gt;11</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M948.3373,-143.8314C967.3396,-134.3302 990.7758,-122.6121 1010.9252,-112.5374"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1012.545,-115.6407 1019.924,-108.038 1009.4145,-109.3797 1012.545,-115.6407"/>
+</g>
+<!-- 6 -->
+<g id="node7" class="node">
+<title>6</title>
+<path fill="none" stroke="#56d882" stroke-width="2" d="M1310.5,-180C1310.5,-180 1223.5,-180 1223.5,-180 1217.5,-180 1211.5,-174 1211.5,-168 1211.5,-168 1211.5,-156 1211.5,-156 1211.5,-150 1217.5,-144 1223.5,-144 1223.5,-144 1310.5,-144 1310.5,-144 1316.5,-144 1322.5,-150 1322.5,-156 1322.5,-156 1322.5,-168 1322.5,-168 1322.5,-174 1316.5,-180 1310.5,-180"/>
+<text text-anchor="middle" x="1267" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">quantification_salmon</text>
+</g>
+<!-- 6&#45;&gt;0 -->
+<g id="edge6" class="edge">
+<title>6&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1247.3898,-143.7542C1224.9107,-123.6927 1186.2216,-91.6982 1148,-72 1104.0675,-49.3586 1048.8886,-34.1028 1013.054,-25.7361"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1013.564,-22.2628 1003.0369,-23.4593 1012.0125,-29.0887 1013.564,-22.2628"/>
+</g>
+<!-- 10 -->
+<g id="node11" class="node">
+<title>10</title>
+<path fill="none" stroke="#56c9d8" stroke-width="2" d="M1340,-108C1340,-108 1228,-108 1228,-108 1222,-108 1216,-102 1216,-96 1216,-96 1216,-84 1216,-84 1216,-78 1222,-72 1228,-72 1228,-72 1340,-72 1340,-72 1346,-72 1352,-78 1352,-84 1352,-84 1352,-96 1352,-96 1352,-102 1346,-108 1340,-108"/>
+<text text-anchor="middle" x="1284" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_genes</text>
+</g>
+<!-- 6&#45;&gt;10 -->
+<g id="edge24" class="edge">
+<title>6&#45;&gt;10</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1271.2898,-143.8314C1273.108,-136.131 1275.2699,-126.9743 1277.2905,-118.4166"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1280.7608,-118.95 1279.6524,-108.4133 1273.9481,-117.3414 1280.7608,-118.95"/>
+</g>
+<!-- 12 -->
+<g id="node13" class="node">
+<title>12</title>
+<path fill="none" stroke="#569ad8" stroke-width="2" d="M1474,-108C1474,-108 1382,-108 1382,-108 1376,-108 1370,-102 1370,-96 1370,-96 1370,-84 1370,-84 1370,-78 1376,-72 1382,-72 1382,-72 1474,-72 1474,-72 1480,-72 1486,-78 1486,-84 1486,-84 1486,-96 1486,-96 1486,-102 1480,-108 1474,-108"/>
+<text text-anchor="middle" x="1428" y="-87.5" font-family="sans" font-size="10.00" fill="#000000">salmon_quantmerge_tr</text>
+</g>
+<!-- 6&#45;&gt;12 -->
+<g id="edge26" class="edge">
+<title>6&#45;&gt;12</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1307.6271,-143.8314C1329.1599,-134.2018 1355.7849,-122.295 1378.5152,-112.1299"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1379.9652,-115.3155 1387.665,-108.038 1377.1074,-108.9254 1379.9652,-115.3155"/>
+</g>
+<!-- 7 -->
+<g id="node8" class="node">
+<title>7</title>
+<path fill="none" stroke="#d88556" stroke-width="2" d="M1181,-180C1181,-180 1039,-180 1039,-180 1033,-180 1027,-174 1027,-168 1027,-168 1027,-156 1027,-156 1027,-150 1033,-144 1039,-144 1039,-144 1181,-144 1181,-144 1187,-144 1193,-150 1193,-156 1193,-156 1193,-168 1193,-168 1193,-174 1187,-180 1181,-180"/>
+<text text-anchor="middle" x="1110" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">pe_genome_quantification_kallisto</text>
+</g>
+<!-- 7&#45;&gt;0 -->
+<g id="edge7" class="edge">
+<title>7&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1122.0924,-143.7945C1133.3363,-124.353 1146.2414,-93.4497 1131,-72 1117.1153,-52.4595 1054.535,-35.2799 1013.2611,-25.7978"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1013.7931,-22.3302 1003.2694,-23.5561 1012.2607,-29.1604 1013.7931,-22.3302"/>
+</g>
+<!-- 8 -->
+<g id="node9" class="node">
+<title>8</title>
+<path fill="none" stroke="#88d856" stroke-width="2" d="M1479,-180C1479,-180 1353,-180 1353,-180 1347,-180 1341,-174 1341,-168 1341,-168 1341,-156 1341,-156 1341,-150 1347,-144 1353,-144 1353,-144 1479,-144 1479,-144 1485,-144 1491,-150 1491,-156 1491,-156 1491,-168 1491,-168 1491,-174 1485,-180 1479,-180"/>
+<text text-anchor="middle" x="1416" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">genome_quantification_kallisto</text>
+</g>
+<!-- 8&#45;&gt;0 -->
+<g id="edge8" class="edge">
+<title>8&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1457.534,-143.9032C1472.1053,-135.2837 1486.8583,-123.4273 1495,-108 1502.4678,-93.8497 1505.7123,-83.8847 1495,-72 1462.8307,-36.3099 1127.5307,-22.6878 1013.6242,-19.0686"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1013.4133,-15.5605 1003.3097,-18.7492 1013.1966,-22.5572 1013.4133,-15.5605"/>
+</g>
+<!-- 9&#45;&gt;0 -->
+<g id="edge9" class="edge">
+<title>9&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M916.1874,-71.8314C925.8514,-63.1337 937.5796,-52.5783 948.0816,-43.1265"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="950.7275,-45.454 955.8191,-36.1628 946.0447,-40.251 950.7275,-45.454"/>
+</g>
+<!-- 10&#45;&gt;0 -->
+<g id="edge10" class="edge">
+<title>10&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1215.6448,-74.0209C1153.1373,-59.4087 1063.0275,-38.3441 1013.0065,-26.6509"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1013.7953,-23.241 1003.2611,-24.3727 1012.2019,-30.0572 1013.7953,-23.241"/>
+</g>
+<!-- 11&#45;&gt;0 -->
+<g id="edge11" class="edge">
+<title>11&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1035.8126,-71.8314C1026.1486,-63.1337 1014.4204,-52.5783 1003.9184,-43.1265"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1005.9553,-40.251 996.1809,-36.1628 1001.2725,-45.454 1005.9553,-40.251"/>
+</g>
+<!-- 12&#45;&gt;0 -->
+<g id="edge12" class="edge">
+<title>12&#45;&gt;0</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1369.9993,-73.9492C1366.9638,-73.2561 1363.9505,-72.6009 1361,-72 1234.5556,-46.2493 1082.2442,-28.843 1013.2245,-21.6797"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1013.5735,-18.1972 1003.2684,-20.6577 1012.8587,-25.1606 1013.5735,-18.1972"/>
+</g>
+<!-- 13 -->
+<g id="node14" class="node">
+<title>13</title>
+<path fill="none" stroke="#d8cb56" stroke-width="2" d="M694.5,-180C694.5,-180 605.5,-180 605.5,-180 599.5,-180 593.5,-174 593.5,-168 593.5,-168 593.5,-156 593.5,-156 593.5,-150 599.5,-144 605.5,-144 605.5,-144 694.5,-144 694.5,-144 700.5,-144 706.5,-150 706.5,-156 706.5,-156 706.5,-168 706.5,-168 706.5,-174 700.5,-180 694.5,-180"/>
+<text text-anchor="middle" x="650" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">pe_map_genome_star</text>
+</g>
+<!-- 13&#45;&gt;3 -->
+<g id="edge13" class="edge">
+<title>13&#45;&gt;3</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M606.3448,-143.8314C583.1042,-134.159 554.3432,-122.1891 529.8477,-111.9944"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="530.9185,-108.6491 520.3413,-108.038 528.2288,-115.1117 530.9185,-108.6491"/>
+</g>
+<!-- 14 -->
+<g id="node15" class="node">
+<title>14</title>
+<path fill="none" stroke="#56d8b1" stroke-width="2" d="M809.5,-180C809.5,-180 736.5,-180 736.5,-180 730.5,-180 724.5,-174 724.5,-168 724.5,-168 724.5,-156 724.5,-156 724.5,-150 730.5,-144 736.5,-144 736.5,-144 809.5,-144 809.5,-144 815.5,-144 821.5,-150 821.5,-156 821.5,-156 821.5,-168 821.5,-168 821.5,-174 815.5,-180 809.5,-180"/>
+<text text-anchor="middle" x="773" y="-159.5" font-family="sans" font-size="10.00" fill="#000000">map_genome_star</text>
+</g>
+<!-- 14&#45;&gt;4 -->
+<g id="edge14" class="edge">
+<title>14&#45;&gt;4</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M748.7751,-143.8314C736.8372,-134.8779 722.2744,-123.9558 709.394,-114.2955"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="711.3171,-111.3629 701.2171,-108.1628 707.1171,-116.9629 711.3171,-111.3629"/>
+</g>
+<!-- 15 -->
+<g id="node16" class="node">
+<title>15</title>
+<path fill="none" stroke="#ced856" stroke-width="2" d="M968,-254.5C968,-254.5 856,-254.5 856,-254.5 850,-254.5 844,-248.5 844,-242.5 844,-242.5 844,-230.5 844,-230.5 844,-224.5 850,-218.5 856,-218.5 856,-218.5 968,-218.5 968,-218.5 974,-218.5 980,-224.5 980,-230.5 980,-230.5 980,-242.5 980,-242.5 980,-248.5 974,-254.5 968,-254.5"/>
+<text text-anchor="middle" x="912" y="-234" font-family="sans" font-size="10.00" fill="#000000">pe_remove_polya_cutadapt</text>
+</g>
+<!-- 15&#45;&gt;5 -->
+<g id="edge15" class="edge">
+<title>15&#45;&gt;5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M912,-218.4656C912,-210.0178 912,-199.7542 912,-190.3064"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="915.5001,-190.1265 912,-180.1265 908.5001,-190.1265 915.5001,-190.1265"/>
+</g>
+<!-- 15&#45;&gt;7 -->
+<g id="edge19" class="edge">
+<title>15&#45;&gt;7</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M959.9303,-218.4656C987.6935,-208.0194 1022.8356,-194.7967 1052.1325,-183.7734"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1053.698,-186.924 1061.8248,-180.1265 1051.2329,-180.3724 1053.698,-186.924"/>
+</g>
+<!-- 15&#45;&gt;13 -->
+<g id="edge28" class="edge">
+<title>15&#45;&gt;13</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M848.5771,-218.4656C808.5632,-207.0876 756.9657,-192.4158 716.3957,-180.8797"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="717.174,-177.4623 706.598,-178.0937 715.2594,-184.1954 717.174,-177.4623"/>
+</g>
+<!-- 16 -->
+<g id="node17" class="node">
+<title>16</title>
+<path fill="none" stroke="#d89c56" stroke-width="2" d="M1144.5,-257C1144.5,-257 1043.5,-257 1043.5,-257 1037.5,-257 1031.5,-251 1031.5,-245 1031.5,-245 1031.5,-228 1031.5,-228 1031.5,-222 1037.5,-216 1043.5,-216 1043.5,-216 1144.5,-216 1144.5,-216 1150.5,-216 1156.5,-222 1156.5,-228 1156.5,-228 1156.5,-245 1156.5,-245 1156.5,-251 1150.5,-257 1144.5,-257"/>
+<text text-anchor="middle" x="1094" y="-245" font-family="sans" font-size="10.00" fill="#000000">create_index_salmon</text>
+<text text-anchor="middle" x="1094" y="-234" font-family="sans" font-size="10.00" fill="#000000">kmer: 31</text>
+<text text-anchor="middle" x="1094" y="-223" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text>
+</g>
+<!-- 16&#45;&gt;5 -->
+<g id="edge16" class="edge">
+<title>16&#45;&gt;5</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1043.7859,-215.9453C1019.5425,-206.0215 990.4296,-194.1044 965.7399,-183.9979"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="966.7439,-180.6271 956.1633,-180.0778 964.092,-187.1053 966.7439,-180.6271"/>
+</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="M1141.731,-215.9453C1164.6735,-206.0654 1192.204,-194.2099 1215.6058,-184.1322"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1217.2204,-187.2477 1225.0206,-180.0778 1214.4517,-180.8185 1217.2204,-187.2477"/>
+</g>
+<!-- 17 -->
+<g id="node18" class="node">
+<title>17</title>
+<path fill="none" stroke="#59d856" stroke-width="2" d="M1315,-254.5C1315,-254.5 1219,-254.5 1219,-254.5 1213,-254.5 1207,-248.5 1207,-242.5 1207,-242.5 1207,-230.5 1207,-230.5 1207,-224.5 1213,-218.5 1219,-218.5 1219,-218.5 1315,-218.5 1315,-218.5 1321,-218.5 1327,-224.5 1327,-230.5 1327,-230.5 1327,-242.5 1327,-242.5 1327,-248.5 1321,-254.5 1315,-254.5"/>
+<text text-anchor="middle" x="1267" y="-234" font-family="sans" font-size="10.00" fill="#000000">remove_polya_cutadapt</text>
+</g>
+<!-- 17&#45;&gt;6 -->
+<g id="edge17" class="edge">
+<title>17&#45;&gt;6</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1267,-218.4656C1267,-210.0178 1267,-199.7542 1267,-190.3064"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1270.5001,-190.1265 1267,-180.1265 1263.5001,-190.1265 1270.5001,-190.1265"/>
+</g>
+<!-- 17&#45;&gt;8 -->
+<g id="edge21" class="edge">
+<title>17&#45;&gt;8</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1303.0687,-218.4656C1323.4162,-208.2919 1349.0306,-195.4847 1370.7191,-184.6405"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1372.368,-187.7292 1379.747,-180.1265 1369.2374,-181.4682 1372.368,-187.7292"/>
+</g>
+<!-- 17&#45;&gt;14 -->
+<g id="edge30" class="edge">
+<title>17&#45;&gt;14</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1206.7501,-223.4738C1193.065,-220.7709 1178.5647,-218.1079 1165,-216 1020.9591,-193.6169 982.198,-207.2604 839,-180 836.6374,-179.5502 834.2356,-179.059 831.8155,-178.5356"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="832.349,-175.0668 821.818,-176.2274 830.7743,-181.8874 832.349,-175.0668"/>
+</g>
+<!-- 18 -->
+<g id="node19" class="node">
+<title>18</title>
+<path fill="none" stroke="#5682d8" stroke-width="2" d="M1462.5,-254.5C1462.5,-254.5 1361.5,-254.5 1361.5,-254.5 1355.5,-254.5 1349.5,-248.5 1349.5,-242.5 1349.5,-242.5 1349.5,-230.5 1349.5,-230.5 1349.5,-224.5 1355.5,-218.5 1361.5,-218.5 1361.5,-218.5 1462.5,-218.5 1462.5,-218.5 1468.5,-218.5 1474.5,-224.5 1474.5,-230.5 1474.5,-230.5 1474.5,-242.5 1474.5,-242.5 1474.5,-248.5 1468.5,-254.5 1462.5,-254.5"/>
+<text text-anchor="middle" x="1412" y="-239.5" font-family="sans" font-size="10.00" fill="#000000">create_index_kallisto</text>
+<text text-anchor="middle" x="1412" y="-228.5" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text>
+</g>
+<!-- 18&#45;&gt;7 -->
+<g id="edge20" class="edge">
+<title>18&#45;&gt;7</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1349.4126,-219.4641C1344.8775,-218.2769 1340.3707,-217.1114 1336,-216 1290.4851,-204.4264 1239.6293,-192.2119 1197.7028,-182.3327"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1198.3344,-178.8858 1187.7987,-180.0033 1196.7317,-185.6999 1198.3344,-178.8858"/>
+</g>
+<!-- 18&#45;&gt;8 -->
+<g id="edge22" class="edge">
+<title>18&#45;&gt;8</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1412.9683,-218.4656C1413.4219,-210.0178 1413.9729,-199.7542 1414.4802,-190.3064"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1417.9855,-190.2998 1415.0268,-180.1265 1410.9956,-189.9244 1417.9855,-190.2998"/>
+</g>
+<!-- 19 -->
+<g id="node20" class="node">
+<title>19</title>
+<path fill="none" stroke="#d8b456" stroke-width="2" d="M757.5,-257C757.5,-257 656.5,-257 656.5,-257 650.5,-257 644.5,-251 644.5,-245 644.5,-245 644.5,-228 644.5,-228 644.5,-222 650.5,-216 656.5,-216 656.5,-216 757.5,-216 757.5,-216 763.5,-216 769.5,-222 769.5,-228 769.5,-228 769.5,-245 769.5,-245 769.5,-251 763.5,-257 757.5,-257"/>
+<text text-anchor="middle" x="707" y="-245" font-family="sans" font-size="10.00" fill="#000000">create_index_star</text>
+<text text-anchor="middle" x="707" y="-234" font-family="sans" font-size="10.00" fill="#000000">index_size: 76</text>
+<text text-anchor="middle" x="707" y="-223" font-family="sans" font-size="10.00" fill="#000000">organism: homo_sapiens</text>
+</g>
+<!-- 19&#45;&gt;13 -->
+<g id="edge27" class="edge">
+<title>19&#45;&gt;13</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M691.1223,-215.7476C684.565,-207.177 676.8905,-197.1463 669.9587,-188.0864"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="672.7112,-185.924 663.855,-180.1087 667.1517,-190.1775 672.7112,-185.924"/>
+</g>
+<!-- 19&#45;&gt;14 -->
+<g id="edge29" class="edge">
+<title>19&#45;&gt;14</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M725.3847,-215.7476C733.0549,-207.0896 742.0451,-196.9415 750.1354,-187.8093"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="752.9461,-189.9148 756.9574,-180.1087 747.7064,-185.2729 752.9461,-189.9148"/>
+</g>
+<!-- 20 -->
+<g id="node21" class="node">
+<title>20</title>
+<path fill="none" stroke="#56d89a" stroke-width="2" d="M985,-329C985,-329 839,-329 839,-329 833,-329 827,-323 827,-317 827,-317 827,-305 827,-305 827,-299 833,-293 839,-293 839,-293 985,-293 985,-293 991,-293 997,-299 997,-305 997,-305 997,-317 997,-317 997,-323 991,-329 985,-329"/>
+<text text-anchor="middle" x="912" y="-314" font-family="sans" font-size="10.00" fill="#000000">pe_remove_adapters_cutadapt</text>
+<text text-anchor="middle" x="912" y="-303" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_paired</text>
+</g>
+<!-- 20&#45;&gt;15 -->
+<g id="edge31" class="edge">
+<title>20&#45;&gt;15</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M912,-292.9656C912,-284.5178 912,-274.2542 912,-264.8064"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="915.5001,-264.6265 912,-254.6265 908.5001,-264.6265 915.5001,-264.6265"/>
+</g>
+<!-- 21 -->
+<g id="node22" class="node">
+<title>21</title>
+<path fill="none" stroke="#566bd8" stroke-width="2" d="M1343,-329C1343,-329 1191,-329 1191,-329 1185,-329 1179,-323 1179,-317 1179,-317 1179,-305 1179,-305 1179,-299 1185,-293 1191,-293 1191,-293 1343,-293 1343,-293 1349,-293 1355,-299 1355,-305 1355,-305 1355,-317 1355,-317 1355,-323 1349,-329 1343,-329"/>
+<text text-anchor="middle" x="1267" y="-314" font-family="sans" font-size="10.00" fill="#000000">remove_adapters_cutadapt</text>
+<text text-anchor="middle" x="1267" y="-303" font-family="sans" font-size="10.00" fill="#000000">sample: synthetic_10_reads_mate_1</text>
+</g>
+<!-- 21&#45;&gt;17 -->
+<g id="edge32" class="edge">
+<title>21&#45;&gt;17</title>
+<path fill="none" stroke="#c0c0c0" stroke-width="2" d="M1267,-292.9656C1267,-284.5178 1267,-274.2542 1267,-264.8064"/>
+<polygon fill="#c0c0c0" stroke="#c0c0c0" stroke-width="2" points="1270.5001,-264.6265 1267,-254.6265 1263.5001,-264.6265 1270.5001,-264.6265"/>
+</g>
+</g>
+</svg>
diff --git a/tests/test_integration_workflow/expected_output.files b/tests/test_integration_workflow/expected_output.files
index a60f623..1e17510 100644
--- a/tests/test_integration_workflow/expected_output.files
+++ b/tests/test_integration_workflow/expected_output.files
@@ -1,12 +1,7 @@
 results/kallisto_indexes/homo_sapiens/kallisto.idx
-results/salmon_indexes/homo_sapiens/31/salmon.idx/duplicate_clusters.tsv
-results/salmon_indexes/homo_sapiens/31/salmon.idx/hash.bin
-results/salmon_indexes/homo_sapiens/31/salmon.idx/header.json
-results/salmon_indexes/homo_sapiens/31/salmon.idx/refInfo.json
-results/salmon_indexes/homo_sapiens/31/salmon.idx/rsd.bin
-results/salmon_indexes/homo_sapiens/31/salmon.idx/sa.bin
-results/salmon_indexes/homo_sapiens/31/salmon.idx/txpInfo.bin
 results/salmon_indexes/homo_sapiens/31/salmon.idx/versionInfo.json
+results/salmon_indexes/homo_sapiens/31/salmon.idx/duplicate_clusters.tsv
+results/salmon_indexes/homo_sapiens/31/salmon.idx/info.json
 results/star_indexes/homo_sapiens/75/STAR_index/chrLength.txt
 results/star_indexes/homo_sapiens/75/STAR_index/chrNameLength.txt
 results/star_indexes/homo_sapiens/75/STAR_index/chrName.txt
@@ -78,8 +73,6 @@ results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kal
 results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/pseudoalignments.bam
 results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.kallisto.pseudo.sam
 results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/lib_format_counts.json
-results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/quant.genes.sf
-results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/quant.sf
 results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/aux_info/ambig_info.tsv
 results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/aux_info/expected_bias
 results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/aux_info/observed_bias
diff --git a/tests/test_integration_workflow/expected_output.md5 b/tests/test_integration_workflow/expected_output.md5
index 01c8966..07abc1e 100644
--- a/tests/test_integration_workflow/expected_output.md5
+++ b/tests/test_integration_workflow/expected_output.md5
@@ -1,12 +1,7 @@
 cbaebdb67aee4784b64aff7fec9fda42  results/kallisto_indexes/homo_sapiens/kallisto.idx
-15f17d12eb9b908605bd6dbb1e9ea5c5  results/salmon_indexes/homo_sapiens/31/salmon.idx/duplicate_clusters.tsv
-5dd9a2314563aa72fc0498ff173c578a  results/salmon_indexes/homo_sapiens/31/salmon.idx/hash.bin
-45588b6e8acf09e507f2aa5883e411d5  results/salmon_indexes/homo_sapiens/31/salmon.idx/header.json
-c13cbadc90309dcede958d26c1f7c747  results/salmon_indexes/homo_sapiens/31/salmon.idx/refInfo.json
-5dec8cab99b7cccd6a341cf85eb5b978  results/salmon_indexes/homo_sapiens/31/salmon.idx/rsd.bin
-2a5dddf1ff309c1287f0b88f1631c0f3  results/salmon_indexes/homo_sapiens/31/salmon.idx/sa.bin
-cd72748424a7d75dc8b2bdc342eb04b5  results/salmon_indexes/homo_sapiens/31/salmon.idx/txpInfo.bin
-3d2de5424aae670242a9ca02c0f4c48c  results/salmon_indexes/homo_sapiens/31/salmon.idx/versionInfo.json
+0ac1afd9a4f380afd70be75b21814c64  results/salmon_indexes/homo_sapiens/31/salmon.idx/versionInfo.json
+51b5292e3a874119c0e1aa566e95d70c  results/salmon_indexes/homo_sapiens/31/salmon.idx/duplicate_clusters.tsv
+4c1ab7841bbd1a1e8e3b15e7750ecc38  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
@@ -53,8 +48,8 @@ b28aac49f537b8cba364b6422458ad28  results/paired_end/synthetic_10_reads_paired_s
 5e07e870d516a91647808bd84068d829  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/abundance.tsv
 6180a904511292b0f173794ae98af991  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/pseudoalignments.bam
 d41d8cd98f00b204e9800998ecf8427e  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/quant_kallisto/synthetic_10_reads_paired_synthetic_10_reads_paired.kallisto.pseudo.sam
-2987d73b246aacce29f64110e36fdeea  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/lib_format_counts.json
-8b03c43b8241d50bce5ac642564779e1  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/aux_info/ambig_info.tsv
+c77480e0235761f2d7f80dbceb2e2806  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/lib_format_counts.json
+989d6ee63b728fced9ec0249735ab83d  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/aux_info/ambig_info.tsv
 3407f87245d0003e0ffbfdf6d8c04f20  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/aux_info/expected_bias
 92bcd0592d22a6a58d0360fc76103e56  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/aux_info/observed_bias
 92bcd0592d22a6a58d0360fc76103e56  results/paired_end/synthetic_10_reads_paired_synthetic_10_reads_paired/salmon_quant/aux_info/observed_bias_3p
@@ -77,10 +72,8 @@ b28aac49f537b8cba364b6422458ad28  results/single_end/synthetic_10_reads_mate_1_s
 50a9b89a9f1da2c438cb0041b64faa0e  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/abundance.tsv
 3a727fbf59b74a85e1738b0eb3404a73  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/pseudoalignments.bam
 d41d8cd98f00b204e9800998ecf8427e  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/quant_kallisto/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1.kallisto.pseudo.sam
-efe791920c3109d3bfd3dfd3dd6f1cbd  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/lib_format_counts.json
-644256e10c1cfff4fd67b5e7be60742a  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/quant.genes.sf
-50ef8217ce367740e40dd040d6907573  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/quant.sf
-8b03c43b8241d50bce5ac642564779e1  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/aux_info/ambig_info.tsv
+e72f5d798c99272f8c0166dc77247db1  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/lib_format_counts.json
+989d6ee63b728fced9ec0249735ab83d  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/aux_info/ambig_info.tsv
 3407f87245d0003e0ffbfdf6d8c04f20  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/aux_info/expected_bias
 92bcd0592d22a6a58d0360fc76103e56  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/aux_info/observed_bias
 92bcd0592d22a6a58d0360fc76103e56  results/single_end/synthetic_10_reads_mate_1_synthetic_10_reads_mate_1/salmon_quant/aux_info/observed_bias_3p
diff --git a/workflow/rules/paired_end.snakefile.smk b/workflow/rules/paired_end.snakefile.smk
index 1d1f7c0..da8ed99 100644
--- a/workflow/rules/paired_end.snakefile.smk
+++ b/workflow/rules/paired_end.snakefile.smk
@@ -1,286 +1,285 @@
 
 rule pe_fastqc:
-	'''A quality control tool for high throughput sequence data'''
+    '''A quality control tool for high throughput sequence data'''
 
-	input:
-		reads1 = lambda wildcards: samples_table.loc[wildcards.sample, "fq1"],
-		reads2 = lambda wildcards: samples_table.loc[wildcards.sample, "fq2"]
-	output:
-		outdir1 = directory(os.path.join(config["output_dir"],"paired_end", "{sample}", "mate1_fastqc")),
-		outdir2 = directory(os.path.join(config["output_dir"],"paired_end", "{sample}", "mate2_fastqc"))
-	threads:
-		2
-	singularity:
-		"docker://zavolab/fastqc:0.11.8"
-	log:
-		os.path.join(config["log_dir"],"paired_end", "{sample}", "fastqc.log")
-	shell:
-		"(mkdir -p {output.outdir1}; \
-		mkdir -p {output.outdir2}; \
-		fastqc --outdir {output.outdir1} {input.reads1} & \
-		fastqc --outdir {output.outdir2} {input.reads2}) &> {log}"
+    input:
+        reads1 = lambda wildcards: samples_table.loc[wildcards.sample, "fq1"],
+        reads2 = lambda wildcards: samples_table.loc[wildcards.sample, "fq2"]
+    output:
+        outdir1 = directory(os.path.join(config["output_dir"],"paired_end", "{sample}", "mate1_fastqc")),
+        outdir2 = directory(os.path.join(config["output_dir"],"paired_end", "{sample}", "mate2_fastqc"))
+    threads:
+        2
+    singularity:
+        "docker://zavolab/fastqc:0.11.8"
+    log:
+        os.path.join(config["log_dir"],"paired_end", "{sample}", "fastqc.log")
+    shell:
+        "(mkdir -p {output.outdir1}; \
+        mkdir -p {output.outdir2}; \
+        fastqc --outdir {output.outdir1} {input.reads1} & \
+        fastqc --outdir {output.outdir2} {input.reads2}) &> {log}"
 
 
 rule pe_remove_adapters_cutadapt:
-	'''Remove adapters'''
-	input:
-		reads1 = lambda wildcards: samples_table.loc[wildcards.sample, "fq1"],
-		reads2 = lambda wildcards: samples_table.loc[wildcards.sample, "fq2"]
-	output:
-		reads1 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_adapters_mate1.fastq.gz"),
+    '''Remove adapters'''
+    input:
+        reads1 = lambda wildcards: samples_table.loc[wildcards.sample, "fq1"],
+        reads2 = lambda wildcards: samples_table.loc[wildcards.sample, "fq2"]
+    output:
+        reads1 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_adapters_mate1.fastq.gz"),
 
-		reads2 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_adapters_mate2.fastq.gz")
-	params:
-		adapter_3_mate1 = lambda wildcards:
-			samples_table.loc[wildcards.sample, 'fq1_3p'],
-		adapter_5_mate1 = lambda wildcards:
-			samples_table.loc[wildcards.sample, 'fq1_5p'],
-		adapter_3_mate2 = lambda wildcards:
-			samples_table.loc[wildcards.sample, 'fq2_3p'],
-		adapter_5_mate2 = lambda wildcards:
-			samples_table.loc[wildcards.sample, 'fq2_5p']
-	singularity:
-		"docker://zavolab/cutadapt:1.16"
-	threads: 8
-	log:
-		os.path.join( config["log_dir"], "paired_end", "{sample}", "remove_adapters_cutadapt.log")
-	shell:
-		"(cutadapt \
-		-e 0.1 \
-		-j {threads} \
-		--pair-filter=both \
-		-m 10 \
-		-n 3 \
-		-a {params.adapter_3_mate1} \
-		-g {params.adapter_5_mate1} \
-		-A {params.adapter_3_mate2} \
-		-G {params.adapter_5_mate2} \
-		-o {output.reads1} \
-		-p {output.reads2} \
-		{input.reads1} \
-		{input.reads2}) &> {log}"
+        reads2 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_adapters_mate2.fastq.gz")
+    params:
+        adapter_3_mate1 = lambda wildcards:
+            samples_table.loc[wildcards.sample, 'fq1_3p'],
+        adapter_5_mate1 = lambda wildcards:
+            samples_table.loc[wildcards.sample, 'fq1_5p'],
+        adapter_3_mate2 = lambda wildcards:
+            samples_table.loc[wildcards.sample, 'fq2_3p'],
+        adapter_5_mate2 = lambda wildcards:
+            samples_table.loc[wildcards.sample, 'fq2_5p']
+    singularity:
+        "docker://zavolab/cutadapt:1.16"
+    threads: 8
+    log:
+        os.path.join( config["log_dir"], "paired_end", "{sample}", "remove_adapters_cutadapt.log")
+    shell:
+        "(cutadapt \
+        -e 0.1 \
+        -j {threads} \
+        --pair-filter=both \
+        -m 10 \
+        -n 3 \
+        -a {params.adapter_3_mate1} \
+        -g {params.adapter_5_mate1} \
+        -A {params.adapter_3_mate2} \
+        -G {params.adapter_5_mate2} \
+        -o {output.reads1} \
+        -p {output.reads2} \
+        {input.reads1} \
+        {input.reads2}) &> {log}"
 
 
 rule pe_remove_polya_cutadapt:
-	'''Remove polyA tails'''
-	input:
-		reads1 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_adapters_mate1.fastq.gz"),
-		reads2 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_adapters_mate2.fastq.gz")
-	output:
-		reads1 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_polya_mate1.fastq.gz"),
-		reads2 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_polya_mate2.fastq.gz")
-	params:
-		polya_3_mate1 = lambda wildcards:
-			samples_table.loc[wildcards.sample, 'fq1_polya'],
-		polya_3_mate2 = lambda wildcards:
-			samples_table.loc[wildcards.sample, 'fq2_polya'],
-	singularity:
-		"docker://zavolab/cutadapt:1.16"
-	threads: 8
-	log:
-		os.path.join( config["log_dir"], "paired_end", "{sample}", "remove_polya_cutadapt.log")
-	shell:
-		'(cutadapt \
-		--match-read-wildcards \
-		-j {threads} \
-		--pair-filter=both \
-		-m 10 \
-		-n 2 \
-		-e 0.1 \
-		-q 6 \
-		-m 10  \
-		-a {params.polya_3_mate1} \
-		-A {params.polya_3_mate2} \
-		-o {output.reads1} \
-		-p {output.reads2} \
-		{input.reads1} \
-		{input.reads2}) &> {log}'
+    '''Remove polyA tails'''
+    input:
+        reads1 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_adapters_mate1.fastq.gz"),
+        reads2 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_adapters_mate2.fastq.gz")
+    output:
+        reads1 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_polya_mate1.fastq.gz"),
+        reads2 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_polya_mate2.fastq.gz")
+    params:
+        polya_3_mate1 = lambda wildcards:
+            samples_table.loc[wildcards.sample, 'fq1_polya'],
+        polya_3_mate2 = lambda wildcards:
+            samples_table.loc[wildcards.sample, 'fq2_polya'],
+    singularity:
+        "docker://zavolab/cutadapt:1.16"
+    threads: 8
+    log:
+        os.path.join( config["log_dir"], "paired_end", "{sample}", "remove_polya_cutadapt.log")
+    shell:
+        '(cutadapt \
+        --match-read-wildcards \
+        -j {threads} \
+        --pair-filter=both \
+        -m 10 \
+        -n 2 \
+        -e 0.1 \
+        -q 6 \
+        -m 10  \
+        -a {params.polya_3_mate1} \
+        -A {params.polya_3_mate2} \
+        -o {output.reads1} \
+        -p {output.reads2} \
+        {input.reads1} \
+        {input.reads2}) &> {log}'
 
 
 rule pe_map_genome_star:
-	'''Map to genome using STAR'''
-	input:
-		index = lambda wildcards:
-			os.path.join(
-				config["star_indexes"],
-				str(samples_table.loc[wildcards.sample, "organism"]),
-				str(samples_table.loc[wildcards.sample, "index_size"]),
-				"STAR_index",
-				"chrNameLength.txt"),
-		reads1 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_polya_mate1.fastq.gz"),
-		reads2 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_polya_mate2.fastq.gz")
-	output:
-		bam = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"map_genome",
-			"{sample}_Aligned.sortedByCoord.out.bam"),
-		logfile = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"map_genome",
-			"{sample}_Log.final.out")
-	params:
-		sample_id = "{sample}",
-		index = lambda wildcards:
-			os.path.join(
-				config["star_indexes"],
-				str(samples_table.loc[wildcards.sample, "organism"]),
-				str(samples_table.loc[wildcards.sample, "index_size"]),
-				"STAR_index"),
-		outFileNamePrefix = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"map_genome",
-			"{sample}_"),
-		multimappers = lambda wildcards:
-			str(samples_table.loc[wildcards.sample, "multimappers"]),
-		soft_clip = lambda wildcards:
-			samples_table.loc[wildcards.sample, "soft_clip"],
-		pass_mode = lambda wildcards:
-			samples_table.loc[wildcards.sample, "pass_mode"]
+    '''Map to genome using STAR'''
+    input:
+        index = lambda wildcards:
+            os.path.join(
+                config["star_indexes"],
+                str(samples_table.loc[wildcards.sample, "organism"]),
+                str(samples_table.loc[wildcards.sample, "index_size"]),
+                "STAR_index",
+                "chrNameLength.txt"),
+        reads1 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_polya_mate1.fastq.gz"),
+        reads2 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_polya_mate2.fastq.gz")
+    output:
+        bam = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "map_genome",
+            "{sample}_Aligned.sortedByCoord.out.bam"),
+        logfile = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "map_genome",
+            "{sample}_Log.final.out")
+    params:
+        sample_id = "{sample}",
+        index = lambda wildcards:
+            os.path.join(
+                config["star_indexes"],
+                str(samples_table.loc[wildcards.sample, "organism"]),
+                str(samples_table.loc[wildcards.sample, "index_size"]),
+                "STAR_index"),
+        outFileNamePrefix = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "map_genome",
+            "{sample}_"),
+        multimappers = lambda wildcards:
+            str(samples_table.loc[wildcards.sample, "multimappers"]),
+        soft_clip = lambda wildcards:
+            samples_table.loc[wildcards.sample, "soft_clip"],
+        pass_mode = lambda wildcards:
+            samples_table.loc[wildcards.sample, "pass_mode"]
 
-	singularity:
-		"docker://zavolab/star:2.6.0a"
+    singularity:
+        "docker://zavolab/star:2.6.0a"
 
-	threads: 12
+    threads: 12
 
-	log:
-		os.path.join( config["log_dir"], "paired_end", "{sample}", "map_genome_star.log")
+    log:
+        os.path.join( config["log_dir"], "paired_end", "{sample}", "map_genome_star.log")
 
-	shell:
-		"(STAR \
-		--runMode alignReads \
-		--twopassMode {params.pass_mode} \
-		--runThreadN {threads} \
-		--genomeDir {params.index} \
-		--readFilesIn {input.reads1} {input.reads2} \
-		--readFilesCommand zcat \
-		--outSAMunmapped None  \
-		--outFilterMultimapNmax {params.multimappers} \
-		--outFilterMultimapScoreRange 1 \
-		--outFileNamePrefix {params.outFileNamePrefix} \
-		--outSAMattributes All \
-		--outStd BAM_SortedByCoordinate \
-		--outSAMtype BAM SortedByCoordinate \
-		--outFilterMismatchNoverLmax 0.04 \
-		--outFilterScoreMinOverLread 0.3 \
-		--outFilterMatchNminOverLread 0.3 \
-		--outFilterType BySJout \
-		--outReadsUnmapped None \
-		--outSAMattrRGline ID:rnaseq_pipeline SM:{params.sample_id} \
-		--alignEndsType {params.soft_clip} > {output.bam};) &> {log}"
+    shell:
+        "(STAR \
+        --runMode alignReads \
+        --twopassMode {params.pass_mode} \
+        --runThreadN {threads} \
+        --genomeDir {params.index} \
+        --readFilesIn {input.reads1} {input.reads2} \
+        --readFilesCommand zcat \
+        --outSAMunmapped None  \
+        --outFilterMultimapNmax {params.multimappers} \
+        --outFilterMultimapScoreRange 1 \
+        --outFileNamePrefix {params.outFileNamePrefix} \
+        --outSAMattributes All \
+        --outStd BAM_SortedByCoordinate \
+        --outSAMtype BAM SortedByCoordinate \
+        --outFilterMismatchNoverLmax 0.04 \
+        --outFilterScoreMinOverLread 0.3 \
+        --outFilterMatchNminOverLread 0.3 \
+        --outFilterType BySJout \
+        --outReadsUnmapped None \
+        --outSAMattrRGline ID:rnaseq_pipeline SM:{params.sample_id} \
+        --alignEndsType {params.soft_clip} > {output.bam};) &> {log}"
 
 
 rule pe_index_genomic_alignment_samtools:
     '''Index the genomic alignment'''
     input:
         bam = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"map_genome",
-			"{sample}_Aligned.sortedByCoord.out.bam"),
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "map_genome",
+            "{sample}_Aligned.sortedByCoord.out.bam"),
     output:
         bai = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"map_genome",
-			"{sample}_Aligned.sortedByCoord.out.bam.bai"),
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "map_genome",
+            "{sample}_Aligned.sortedByCoord.out.bam.bai"),
     singularity:
         "docker://zavolab/samtools:1.8"
     log:
-    	os.path.join( config["log_dir"], "paired_end", "{sample}", "index_genomic_alignment_samtools.log")
-
+        os.path.join( config["log_dir"], "paired_end", "{sample}", "index_genomic_alignment_samtools.log")
     shell:
         "(samtools index {input.bam} {output.bai};) &> {log}"
 
 
 rule pe_quantification_salmon:
-	'''Quantification at transcript and gene level using Salmon'''
-	input:
-		reads1 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_polya_mate1.fastq.gz"),
-		reads2 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_polya_mate2.fastq.gz"),
-		gtf = lambda wildcards:
-			samples_table.loc[wildcards.sample, 'gtf_filtered'],
-		index = lambda wildcards:
-			os.path.join(
-				config["salmon_indexes"],
-				str(samples_table.loc[wildcards.sample, "organism"]),
-				str(samples_table.loc[wildcards.sample, "kmer"]),
-				"salmon.idx")
-	output:		
-		gn_estimates = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"salmon_quant",
-			"quant.genes.sf"),
-		tr_estimates = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"salmon_quant",
-			"quant.sf")
-	params:
-		output_dir = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"salmon_quant"),
-		libType = lambda wildcards:
-			samples_table.loc[wildcards.sample, 'libtype']
-	log:
-		os.path.join(config["log_dir"], "paired_end", "{sample}", "genome_quantification_salmon.log")
-	threads:	6
-	singularity:
-		"docker://zavolab/salmon:0.11.0"
-	shell:
-		"(salmon quant \
+    '''Quantification at transcript and gene level using Salmon'''
+    input:
+        reads1 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_polya_mate1.fastq.gz"),
+        reads2 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_polya_mate2.fastq.gz"),
+        gtf = lambda wildcards:
+            samples_table.loc[wildcards.sample, 'gtf_filtered'],
+        index = lambda wildcards:
+            os.path.join(
+                config["salmon_indexes"],
+                str(samples_table.loc[wildcards.sample, "organism"]),
+                str(samples_table.loc[wildcards.sample, "kmer"]),
+                "salmon.idx")
+    output:        
+        gn_estimates = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "salmon_quant",
+            "quant.genes.sf"),
+        tr_estimates = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "salmon_quant",
+            "quant.sf")
+    params:
+        output_dir = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "salmon_quant"),
+        libType = lambda wildcards:
+            samples_table.loc[wildcards.sample, 'libtype']
+    log:
+        os.path.join(config["log_dir"], "paired_end", "{sample}", "genome_quantification_salmon.log")
+    threads:    6
+    singularity:
+        "docker://zavolab/salmon:1.1.0-slim"
+    shell:
+        "(salmon quant \
         --libType {params.libType} \
         --seqBias \
         --validateMappings \
@@ -294,48 +293,48 @@ rule pe_quantification_salmon:
 
 
 rule pe_genome_quantification_kallisto:
-	'''Quantification at transcript and gene level using Kallisto'''
-	input:
-		reads1 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_polya_mate1.fastq.gz"),
-		reads2 = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"{sample}.remove_polya_mate2.fastq.gz"),
-		index = lambda wildcards:
-			os.path.join(
-				config["kallisto_indexes"],
-				samples_table.loc[wildcards.sample, 'organism'],
-				"kallisto.idx")
-	output:
-		pseudoalignment = os.path.join(
-			config["output_dir"],
-			"paired_end",
-			"{sample}",
-			"quant_kallisto",
-			"{sample}.kallisto.pseudo.sam")
-	params:
-		output_dir = os.path.join(
-				config["output_dir"],
-				"paired_end",
-				"{sample}",
-				"quant_kallisto"),
-		directionality = lambda wildcards:
-			samples_table.loc[wildcards.sample, "kallisto_directionality"]
-	singularity:
-		"docker://zavolab/kallisto:0.46.1"
-	threads:	8
-	log:
-		os.path.join(config["log_dir"], "paired_end", "{sample}", "genome_quantification_kallisto.log")
-	shell:
-		"(kallisto quant \
-		-i {input.index} \
-		-o {params.output_dir} \
-		--pseudobam \
-		{params.directionality} \
-		{input.reads1} {input.reads2} > {output.pseudoalignment}) &> {log}"
-
+    '''Quantification at transcript and gene level using Kallisto'''
+    input:
+        reads1 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_polya_mate1.fastq.gz"),
+        reads2 = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "{sample}.remove_polya_mate2.fastq.gz"),
+        index = lambda wildcards:
+            os.path.join(
+                config["kallisto_indexes"],
+                samples_table.loc[wildcards.sample, 'organism'],
+                "kallisto.idx")
+    output:
+        pseudoalignment = os.path.join(
+            config["output_dir"],
+            "paired_end",
+            "{sample}",
+            "quant_kallisto",
+            "{sample}.kallisto.pseudo.sam")
+    params:
+        output_dir = os.path.join(
+                config["output_dir"],
+                "paired_end",
+                "{sample}",
+                "quant_kallisto"),
+        directionality = lambda wildcards:
+            samples_table.loc[wildcards.sample, "kallisto_directionality"]
+    singularity:
+        "docker://zavolab/kallisto:0.46.1"
+    threads:    8
+    log:
+        os.path.join(config["log_dir"], "paired_end", "{sample}", "genome_quantification_kallisto.log")
+    shell:
+        "(kallisto quant \
+        -i {input.index} \
+        -o {params.output_dir} \
+        --pseudobam \
+        {params.directionality} \
+        {input.reads1} {input.reads2} > {output.pseudoalignment}) &> {log}"
+    
diff --git a/workflow/rules/single_end.snakefile.smk b/workflow/rules/single_end.snakefile.smk
index 08d4d22..3b365d8 100644
--- a/workflow/rules/single_end.snakefile.smk
+++ b/workflow/rules/single_end.snakefile.smk
@@ -1,267 +1,266 @@
 import os
 rule fastqc:
-	''' A quality control tool for high throughput sequence data. '''
-	input:
-		reads = lambda wildcards: samples_table.loc[wildcards.sample, "fq1"],
-	output:
-		outdir = directory(os.path.join(config["output_dir"], "single_end", "{sample}", "mate1_fastqc"))
-	params:
-		seqmode= lambda wildcards: samples_table.loc[wildcards.sample, "seqmode"]
-	singularity:
-		"docker://zavolab/fastqc:0.11.8"
-	log:
-		os.path.join(config["log_dir"], "single_end", "{sample}", "fastqc.log")
-	shell:
-		"(mkdir -p {output.outdir}; \
-		fastqc \
-		--outdir {output.outdir} \
-		{input.reads}) &> {log}"
+    ''' A quality control tool for high throughput sequence data. '''
+    input:
+        reads = lambda wildcards: samples_table.loc[wildcards.sample, "fq1"],
+    output:
+        outdir = directory(os.path.join(config["output_dir"], "single_end", "{sample}", "mate1_fastqc"))
+    params:
+        seqmode= lambda wildcards: samples_table.loc[wildcards.sample, "seqmode"]
+    singularity:
+        "docker://zavolab/fastqc:0.11.8"
+    log:
+        os.path.join(config["log_dir"], "single_end", "{sample}", "fastqc.log")
+    shell:
+        "(mkdir -p {output.outdir}; \
+        fastqc \
+        --outdir {output.outdir} \
+        {input.reads}) &> {log}"
 
 
 rule remove_adapters_cutadapt:
-	''' Remove adapters '''
-	input:
-		reads = lambda wildcards: samples_table.loc[wildcards.sample, "fq1"]
-	output:
-		reads = os.path.join(config["output_dir"], "single_end", "{sample}", "{sample}.remove_adapters_mate1.fastq.gz")
-	params:
-		adapters_3 = lambda wildcards: 
-			samples_table.loc[wildcards.sample, 'fq1_3p'],
-		adapters_5 = lambda wildcards: 
-			samples_table.loc[wildcards.sample, 'fq1_5p']
+    ''' Remove adapters '''
+    input:
+        reads = lambda wildcards: samples_table.loc[wildcards.sample, "fq1"]
+    output:
+        reads = os.path.join(config["output_dir"], "single_end", "{sample}", "{sample}.remove_adapters_mate1.fastq.gz")
+    params:
+        adapters_3 = lambda wildcards: 
+            samples_table.loc[wildcards.sample, 'fq1_3p'],
+        adapters_5 = lambda wildcards: 
+            samples_table.loc[wildcards.sample, 'fq1_5p']
 
-	singularity:
-		"docker://zavolab/cutadapt:1.16"
-	threads: 8
-	log:
-		os.path.join(config["log_dir"], "single_end", "{sample}", "remove_adapters_cutadapt.log")
-	shell:
-		"(cutadapt \
-		-e 0.1 \
-		-O 1 \
-		-j {threads} \
-		-m 10 \
-		-n 3 \
-		-a {params.adapters_3} \
-		-g {params.adapters_5} \
-		-o {output.reads} \
-		{input.reads}) &> {log}"
+    singularity:
+        "docker://zavolab/cutadapt:1.16"
+    threads: 8
+    log:
+        os.path.join(config["log_dir"], "single_end", "{sample}", "remove_adapters_cutadapt.log")
+    shell:
+        "(cutadapt \
+        -e 0.1 \
+        -O 1 \
+        -j {threads} \
+        -m 10 \
+        -n 3 \
+        -a {params.adapters_3} \
+        -g {params.adapters_5} \
+        -o {output.reads} \
+        {input.reads}) &> {log}"
 
 
 rule remove_polya_cutadapt:
-	''' Remove ployA  tails'''
-	input:
-		reads = os.path.join(config["output_dir"], "single_end", "{sample}", "{sample}.remove_adapters_mate1.fastq.gz")
-	output:
-		reads = os.path.join(config["output_dir"], "single_end", "{sample}", "{sample}.remove_polya_mate1.fastq.gz")
-	params:
-		polya_3 = lambda wildcards: 
-			samples_table.loc[wildcards.sample, "fq1_polya"]
-	singularity:
-		"docker://zavolab/cutadapt:1.16"
-	threads: 8
-	log:
-		os.path.join(config["log_dir"], "single_end", "{sample}", "remove_polya_cutadapt.log")
-	shell:
-		"(cutadapt \
-		--match-read-wildcards \
-		-j {threads} \
-		-n 2 \
-		-e 0.1 \
-		-O 1 \
-		-q 6 \
-		-m 10  \
-		-a {params.polya_3} \
-		-o {output.reads} \
-		{input.reads}) &> {log}"
+    ''' Remove ployA  tails'''
+    input:
+        reads = os.path.join(config["output_dir"], "single_end", "{sample}", "{sample}.remove_adapters_mate1.fastq.gz")
+    output:
+        reads = os.path.join(config["output_dir"], "single_end", "{sample}", "{sample}.remove_polya_mate1.fastq.gz")
+    params:
+        polya_3 = lambda wildcards: 
+            samples_table.loc[wildcards.sample, "fq1_polya"]
+    singularity:
+        "docker://zavolab/cutadapt:1.16"
+    threads: 8
+    log:
+        os.path.join(config["log_dir"], "single_end", "{sample}", "remove_polya_cutadapt.log")
+    shell:
+        "(cutadapt \
+        --match-read-wildcards \
+        -j {threads} \
+        -n 2 \
+        -e 0.1 \
+        -O 1 \
+        -q 6 \
+        -m 10  \
+        -a {params.polya_3} \
+        -o {output.reads} \
+        {input.reads}) &> {log}"
 
 
 rule map_genome_star:
-	''' Map to genome using STAR. '''
-	input:
-		index = lambda wildcards:
-			os.path.join(
-				config["star_indexes"],
-				str(samples_table.loc[wildcards.sample, "organism"]),
-				str(samples_table.loc[wildcards.sample, "index_size"]), 
-				"STAR_index","chrNameLength.txt"),
-		reads = os.path.join(config["output_dir"], "single_end", "{sample}", "{sample}.remove_polya_mate1.fastq.gz")
-	output:
-		bam = os.path.join(config["output_dir"], "single_end", 
-			"{sample}", 
-			"map_genome", 
-			"{sample}_Aligned.sortedByCoord.out.bam"),
-		logfile = os.path.join(config["output_dir"], "single_end", 
-			"{sample}", 
-			"map_genome", 
-			"{sample}_Log.final.out")
-	params:
-		sample_id = "{sample}",
-		index = lambda wildcards:
-			os.path.join(
-				config["star_indexes"],
-				str(samples_table.loc[wildcards.sample, "organism"]),
-				str(samples_table.loc[wildcards.sample, "index_size"]), 
-				"STAR_index"),
-		outFileNamePrefix = os.path.join(
-				config["output_dir"], 
-				"single_end", 
-				"{sample}", "map_genome", "{sample}_"),
-		multimappers = lambda wildcards:
-				samples_table.loc[wildcards.sample, "multimappers"],
-		soft_clip = lambda wildcards:
-				samples_table.loc[wildcards.sample, "soft_clip"],
-		pass_mode = lambda wildcards:
-				samples_table.loc[wildcards.sample, "pass_mode"],		
-	singularity:
-		"docker://zavolab/star:2.6.0a"
-	threads: 12
-	log:
-		os.path.join(config["log_dir"], "single_end", "{sample}", "map_genome_star.log")
-	shell:
-		"(STAR \
-		--runMode alignReads \
-		-- twopassMode {params.pass_mode} \
-		--runThreadN {threads} \
-		--genomeDir {params.index} \
-		--readFilesIn {input.reads} \
-		--readFilesCommand zcat \
-		--outSAMunmapped None  \
-		--outFilterMultimapNmax {params.multimappers} \
-		--outFilterMultimapScoreRange 1 \
-		--outFileNamePrefix {params.outFileNamePrefix} \
-		--outSAMattributes All \
-		--outStd BAM_SortedByCoordinate \
-		--outSAMtype BAM SortedByCoordinate \
-		--outFilterMismatchNoverLmax 0.04 \
-		--outFilterScoreMinOverLread 0.3 \
-		--outFilterMatchNminOverLread 0.3 \
-		--outFilterType BySJout \
-		--outReadsUnmapped None \
-		--outSAMattrRGline ID:rcrunch SM:{params.sample_id} \
-		--alignEndsType {params.soft_clip} > {output.bam};) &> {log}"
+    ''' Map to genome using STAR. '''
+    input:
+        index = lambda wildcards:
+            os.path.join(
+                config["star_indexes"],
+                str(samples_table.loc[wildcards.sample, "organism"]),
+                str(samples_table.loc[wildcards.sample, "index_size"]), 
+                "STAR_index","chrNameLength.txt"),
+        reads = os.path.join(config["output_dir"], "single_end", "{sample}", "{sample}.remove_polya_mate1.fastq.gz")
+    output:
+        bam = os.path.join(config["output_dir"], "single_end", 
+            "{sample}", 
+            "map_genome", 
+            "{sample}_Aligned.sortedByCoord.out.bam"),
+        logfile = os.path.join(config["output_dir"], "single_end", 
+            "{sample}", 
+            "map_genome", 
+            "{sample}_Log.final.out")
+    params:
+        sample_id = "{sample}",
+        index = lambda wildcards:
+            os.path.join(
+                config["star_indexes"],
+                str(samples_table.loc[wildcards.sample, "organism"]),
+                str(samples_table.loc[wildcards.sample, "index_size"]), 
+                "STAR_index"),
+        outFileNamePrefix = os.path.join(
+                config["output_dir"], 
+                "single_end", 
+                "{sample}", "map_genome", "{sample}_"),
+        multimappers = lambda wildcards:
+                samples_table.loc[wildcards.sample, "multimappers"],
+        soft_clip = lambda wildcards:
+                samples_table.loc[wildcards.sample, "soft_clip"],
+        pass_mode = lambda wildcards:
+                samples_table.loc[wildcards.sample, "pass_mode"],        
+    singularity:
+        "docker://zavolab/star:2.6.0a"
+    threads: 12
+    log:
+        os.path.join(config["log_dir"], "single_end", "{sample}", "map_genome_star.log")
+    shell:
+        "(STAR \
+        --runMode alignReads \
+        -- twopassMode {params.pass_mode} \
+        --runThreadN {threads} \
+        --genomeDir {params.index} \
+        --readFilesIn {input.reads} \
+        --readFilesCommand zcat \
+        --outSAMunmapped None  \
+        --outFilterMultimapNmax {params.multimappers} \
+        --outFilterMultimapScoreRange 1 \
+        --outFileNamePrefix {params.outFileNamePrefix} \
+        --outSAMattributes All \
+        --outStd BAM_SortedByCoordinate \
+        --outSAMtype BAM SortedByCoordinate \
+        --outFilterMismatchNoverLmax 0.04 \
+        --outFilterScoreMinOverLread 0.3 \
+        --outFilterMatchNminOverLread 0.3 \
+        --outFilterType BySJout \
+        --outReadsUnmapped None \
+        --outSAMattrRGline ID:rcrunch SM:{params.sample_id} \
+        --alignEndsType {params.soft_clip} > {output.bam};) &> {log}"
 
 
 rule index_genomic_alignment_samtools:
-	'''Index genome bamfile using samtools.'''
-	input:
-		bam = os.path.join(config["output_dir"],
-			"single_end", 
-			"{sample}", 
-			"map_genome", 
-			"{sample}_Aligned.sortedByCoord.out.bam")
-	output:
-		bai = os.path.join(config["output_dir"], 
-			"single_end", 
-			"{sample}", 
-			"map_genome", 
-			"{sample}_Aligned.sortedByCoord.out.bam.bai")
-	singularity:
-		"docker://zavolab/samtools:1.8"
-	threads: 1
-	log:
-		os.path.join(config["log_dir"], "single_end", "{sample}", "index_genomic_alignment_samtools.log")
-	shell:
-		"(samtools index {input.bam} {output.bai};) &> {log}"
+    '''Index genome bamfile using samtools.'''
+    input:
+        bam = os.path.join(config["output_dir"],
+            "single_end", 
+            "{sample}", 
+            "map_genome", 
+            "{sample}_Aligned.sortedByCoord.out.bam")
+    output:
+        bai = os.path.join(config["output_dir"], 
+            "single_end", 
+            "{sample}", 
+            "map_genome", 
+            "{sample}_Aligned.sortedByCoord.out.bam.bai")
+    singularity:
+        "docker://zavolab/samtools:1.8"
+    threads: 1
+    log:
+        os.path.join(config["log_dir"], "single_end", "{sample}", "index_genomic_alignment_samtools.log")
+    shell:
+        "(samtools index {input.bam} {output.bai};) &> {log}"
 
 
 rule quantification_salmon:
-	''' Quantification at transcript and gene level using Salmon. '''
-	input:
-		reads = os.path.join(
-			config["output_dir"], 
-			"single_end", 
-			"{sample}", 
-			"{sample}.remove_polya_mate1.fastq.gz"),
-		index = lambda wildcards:
-			os.path.join(
-				config["salmon_indexes"],
-				str(samples_table.loc[wildcards.sample, "organism"]),
-				str(samples_table.loc[wildcards.sample, "kmer"]),
-				"salmon.idx"),
-	   	gtf = lambda wildcards: samples_table.loc[wildcards.sample, "gtf_filtered"]
-	output:
-		gn_estimates = os.path.join(
-			config["output_dir"], 
-			"single_end", 
-			"{sample}", 
-			"salmon_quant",
-			"quant.genes.sf"),
-		tr_estimates = os.path.join(
-			config["output_dir"], 
-			"single_end", 
-			"{sample}", 
-			"salmon_quant",
-			"quant.sf")
-	params:
-		output_dir = os.path.join(
-			config["output_dir"], 
-			"single_end", 
-			"{sample}", 
-			"salmon_quant"),
-		libType = lambda wildcards:
-	 			samples_table.loc[wildcards.sample, "libtype"]
-	log:
-		os.path.join(config["log_dir"], "single_end", "{sample}", "quantification_salmon.log")
-	threads:    12
-	singularity:
-		"docker://zavolab/salmon:0.11.0"
-	shell:
-		"(salmon quant \
-		--libType {params.libType} \
-		--seqBias \
-		--validateMappings \
-		--threads {threads} \
-		--writeUnmappedNames \
-		--index {input.index} \
-		--geneMap {input.gtf} \
-		--unmatedReads {input.reads} \
-		-o {params.output_dir}) &> {log}"
+    ''' Quantification at transcript and gene level using Salmon. '''
+    input:
+        reads = os.path.join(
+            config["output_dir"], 
+            "single_end", 
+            "{sample}", 
+            "{sample}.remove_polya_mate1.fastq.gz"),
+        index = lambda wildcards:
+            os.path.join(
+                config["salmon_indexes"],
+                str(samples_table.loc[wildcards.sample, "organism"]),
+                str(samples_table.loc[wildcards.sample, "kmer"]),
+                "salmon.idx"),
+        gtf = lambda wildcards: samples_table.loc[wildcards.sample, "gtf_filtered"]
+    output:
+        gn_estimates = os.path.join(
+            config["output_dir"], 
+            "single_end", 
+            "{sample}", 
+            "salmon_quant",
+            "quant.genes.sf"),
+        tr_estimates = os.path.join(
+            config["output_dir"], 
+            "single_end", 
+            "{sample}", 
+            "salmon_quant",
+            "quant.sf")
+    params:
+        output_dir = os.path.join(
+            config["output_dir"], 
+            "single_end", 
+            "{sample}", 
+            "salmon_quant"),
+        libType = lambda wildcards:
+                samples_table.loc[wildcards.sample, "libtype"]
+    log:
+        os.path.join(config["log_dir"], "single_end", "{sample}", "quantification_salmon.log")
+    threads:    12
+    singularity:
+        "docker://zavolab/salmon:1.1.0-slim"
+    shell:
+        "(salmon quant \
+        --libType {params.libType} \
+        --seqBias \
+        --validateMappings \
+        --threads {threads} \
+        --writeUnmappedNames \
+        --index {input.index} \
+        --geneMap {input.gtf} \
+        --unmatedReads {input.reads} \
+        -o {params.output_dir}) &> {log}"
 
 
 rule genome_quantification_kallisto:
-	''' Quantification at transcript and gene level using Kallisto. '''
-	input:
-		reads = os.path.join(
-			config["output_dir"], 
-			"single_end", 
-			"{sample}", 
-			"{sample}.remove_polya_mate1.fastq.gz"),
-		index = lambda wildcards:
-			os.path.join(
-				config["kallisto_indexes"],
-				samples_table.loc[wildcards.sample, "organism"],
-				"kallisto.idx")
-	output:
-		pseudoalignment = os.path.join(
-			config["output_dir"], 
-			"single_end", 
-			"{sample}", 
-			"quant_kallisto",
-			"{sample}.kallisto.pseudo.sam")
-	params:
-		output_dir = os.path.join(
-				config["output_dir"], 
-				"single_end", 
-				"{sample}", 
-				"quant_kallisto"),
-		fraglen = lambda wildcards: samples_table.loc[wildcards.sample, 'mean'],
-		fragsd = lambda wildcards: samples_table.loc[wildcards.sample, 'sd'],
-		directionality = lambda wildcards: samples_table.loc[wildcards.sample, 'kallisto_directionality']
-	threads:	    8
-	log:
-		os.path.join(config["log_dir"],"kallisto_align_{sample}.log")
-	singularity:
-		"docker://zavolab/kallisto:0.46.1"
-	shell:
-		"(kallisto quant \
-		-i {input.index} \
-		-o {params.output_dir} \
-		--single \
-		-l {params.fraglen} \
-		-s {params.fragsd} \
-		--pseudobam \
-		{params.directionality} \
-		{input.reads} > {output.pseudoalignment}) &> {log}"
+    ''' Quantification at transcript and gene level using Kallisto. '''
+    input:
+        reads = os.path.join(
+            config["output_dir"], 
+            "single_end", 
+            "{sample}", 
+            "{sample}.remove_polya_mate1.fastq.gz"),
+        index = lambda wildcards:
+            os.path.join(
+                config["kallisto_indexes"],
+                samples_table.loc[wildcards.sample, "organism"],
+                "kallisto.idx")
+    output:
+        pseudoalignment = os.path.join(
+            config["output_dir"], 
+            "single_end", 
+            "{sample}", 
+            "quant_kallisto",
+            "{sample}.kallisto.pseudo.sam")
+    params:
+        output_dir = os.path.join(
+                config["output_dir"], 
+                "single_end", 
+                "{sample}", 
+                "quant_kallisto"),
+        fraglen = lambda wildcards: samples_table.loc[wildcards.sample, 'mean'],
+        fragsd = lambda wildcards: samples_table.loc[wildcards.sample, 'sd'],
+        directionality = lambda wildcards: samples_table.loc[wildcards.sample, 'kallisto_directionality']
+    threads:        8
+    log:
+        os.path.join(config["log_dir"], "single_end", "{sample}", "genome_quantification_kallisto.log.log")
+    singularity:
+        "docker://zavolab/kallisto:0.46.1"
+    shell:
+        "(kallisto quant \
+        -i {input.index} \
+        -o {params.output_dir} \
+        --single \
+        -l {params.fraglen} \
+        -s {params.fragsd} \
+        --pseudobam \
+        {params.directionality} \
+        {input.reads} > {output.pseudoalignment}) &> {log}"
 
-		
-- 
GitLab