diff --git a/README.md b/README.md
index 9fd71c2dbf490bcd0c4e1b4fd56b87fc0645161c..c77c22f7455bb8501e22c012e2540485c11eac4f 100644
--- a/README.md
+++ b/README.md
@@ -173,7 +173,6 @@ your run.
     ```bash
     cat << "EOF" > run.sh
     #!/bin/bash
-    mkdir -p logs/local_log
     snakemake \
         --snakefile="../../snakemake/Snakefile" \
         --configfile="config.yaml" \
diff --git a/Snakefile b/Snakefile
index 17137c97568138d1787f4360a49d0211494520e4..aa8c3475f78fe73c4cc4242bb8eeaf2fa3e56231 100644
--- a/Snakefile
+++ b/Snakefile
@@ -1,160 +1,255 @@
-################################################################################
-### python modules
-################################################################################
+"""General purpose RNA-Seq analysis pipeline developed by the Zavolan Lab"""
 
 import os
 import sys
-import pandas as pd
 
-############################
+import pandas as pd
 
-samples_table = pd.read_csv(config["samples"], header=0, index_col=0, comment='#', engine='python', sep="\t")
+# Get sample table
+samples_table = pd.read_csv(
+    config['samples'],
+    header=0,
+    index_col=0,
+    comment='#',
+    engine='python',
+    sep="\t",
+)
 
+# Global config
 localrules: finish
 
-##################################################################################
-# Execution dependend on sequencing mode
-##################################################################################
-
-include: os.path.join('workflow', 'rules', 'paired_end.snakefile.smk')
-include: os.path.join('workflow', 'rules', 'single_end.snakefile.smk')
+# Create log directories
+os.makedirs(
+    os.path.join(
+        os.getcwd(),
+        config['log_dir'],
+    ),
+    exist_ok=True,
+)
+if cluster_config:
+    os.makedirs(
+        os.path.join(
+            os.getcwd(),
+            os.path.dirname(cluster_config['__default__']['out']),
+        ),
+        exist_ok=True,
+    )
 
-#################################################################################
-### Final rule
-#################################################################################
+# Include subworkflows
+include: os.path.join("workflow", "rules", "paired_end.snakefile.smk")
+include: os.path.join("workflow", "rules", "single_end.snakefile.smk")
 
+# Final rule
 rule finish:
-	input:
-		outdir1 = expand(os.path.join(config["output_dir"], "{seqmode}", "{sample}", "mate1_fastqc"),
-			zip,
-			sample= [i for i in list(samples_table.index.values)], 
-			seqmode= [samples_table.loc[i,"seqmode"] for i in list(samples_table.index.values)]),
-		salmon_gn_estimates = expand(os.path.join(config["output_dir"],"{seqmode}","{sample}","salmon_quant","quant.genes.sf"),
-			zip,
-			sample= [i for i in list(samples_table.index.values)], 
-			seqmode= [samples_table.loc[i,"seqmode"] for i in list(samples_table.index.values)]),
-		pseudoalignment = expand(os.path.join(config["output_dir"],"{seqmode}","{sample}","quant_kallisto", "{sample}.kallisto.pseudo.sam"),
-			zip,
-			sample= [i for i in list(samples_table.index.values)], 
-			seqmode= [samples_table.loc[i,"seqmode"] for i in list(samples_table.index.values)]),
-		TIN_score = expand(os.path.join(config["output_dir"], "{seqmode}", "{sample}", "TIN", "TIN_score.tsv"),
-			zip,
-			sample= [i for i in list(samples_table.index.values)], 
-			seqmode= [samples_table.loc[i,"seqmode"] for i in list(samples_table.index.values)]), 
+    """Rule for collecting outputs"""
+    input:
+        outdir1 = expand(
+            os.path.join(
+                config['output_dir'],
+                "{seqmode}",
+                "{sample}",
+                "mate1_fastqc",
+            ),
+            zip,
+            sample=[i for i in list(samples_table.index.values)],
+            seqmode=[
+                samples_table.loc[i, 'seqmode']
+                for i in list(samples_table.index.values)
+            ]
+        ),
+        salmon_gn_estimates = expand(
+            os.path.join(
+                config['output_dir'],
+                "{seqmode}",
+                "{sample}",
+                "salmon_quant",
+                "quant.genes.sf",
+            ),
+            zip,
+            sample=[i for i in list(samples_table.index.values)],
+            seqmode=[
+                samples_table.loc[i, 'seqmode']
+                for i in list(samples_table.index.values)
+            ]
+        ),
+        pseudoalignment = expand(
+            os.path.join(
+                config['output_dir'],
+                "{seqmode}",
+                "{sample}",
+                "quant_kallisto",
+                "{sample}.kallisto.pseudo.sam",
+            ),
+            zip,
+            sample=[i for i in list(samples_table.index.values)],
+            seqmode=[
+                samples_table.loc[i, 'seqmode']
+                for i in list(samples_table.index.values)
+            ]
+        ),
+        TIN_score = expand(
+            os.path.join(
+                config['output_dir'],
+                "{seqmode}",
+                "{sample}",
+                "TIN",
+                "TIN_score.tsv",
+            ),
+            zip,
+            sample=[i for i in list(samples_table.index.values)],
+            seqmode=[
+                samples_table.loc[i, 'seqmode']
+                for i in list(samples_table.index.values)
+            ]
+        ),
 
 
 rule create_index_star:
-	''' Create index using STAR'''
-	input:
-		genome =lambda wildcards: samples_table["genome"][samples_table["organism"]==wildcards.organism][0],
-		gtf =lambda wildcards: samples_table["gtf"][samples_table["organism"]==wildcards.organism][0]
-	output:
-		chromosome_info = os.path.join(
-			config["star_indexes"],
-			"{organism}",
-			"{index_size}",
-			"STAR_index",
-			"chrNameLength.txt"),
-		chromosomes_names = os.path.join(
-			config["star_indexes"],
-			"{organism}",
-			"{index_size}",
-			"STAR_index",
-			"chrName.txt")
-	params:
-		output_dir = os.path.join(
-				config["star_indexes"],
-				"{organism}",
-				"{index_size}",
-				"STAR_index"),
-		outFileNamePrefix = os.path.join(
-				config["star_indexes"],
-				"{organism}",
-				"{index_size}",
-				"STAR_index/STAR_"),
-		sjdbOverhang = "{index_size}"
-	singularity:
-		"docker://zavolab/star:2.6.0a"
-	threads: 12
-	log:
-		os.path.join( config["local_log"], "{organism}_{index_size}_create_index_star.log")
-	shell:
-		"(mkdir -p {params.output_dir}; \
-		chmod -R 777 {params.output_dir}; \
-		STAR \
-		--runMode genomeGenerate \
-		--sjdbOverhang {params.sjdbOverhang} \
-		--genomeDir {params.output_dir} \
-		--genomeFastaFiles {input.genome} \
-		--runThreadN {threads} \
-		--outFileNamePrefix {params.outFileNamePrefix} \
-		--sjdbGTFfile {input.gtf}) &> {log}"
+    """Create index for STAR alignments"""
+    input:
+        genome = lambda wildcards:
+            samples_table['genome'][
+                samples_table['organism'] == wildcards.organism
+            ][0],
+        gtf = lambda wildcards:
+            samples_table['gtf'][
+                samples_table['organism'] == wildcards.organism
+            ][0],
+    output:
+        chromosome_info = os.path.join(
+            config['star_indexes'],
+            "{organism}",
+            "{index_size}",
+            "STAR_index",
+            "chrNameLength.txt",
+        ),
+        chromosomes_names = os.path.join(
+            config['star_indexes'],
+            "{organism}",
+            "{index_size}",
+            "STAR_index",
+            "chrName.txt",
+        ),
+    params:
+        output_dir = os.path.join(
+            config['star_indexes'],
+            "{organism}",
+            "{index_size}",
+            "STAR_index",
+        ),
+        outFileNamePrefix = os.path.join(
+            config['star_indexes'],
+            "{organism}",
+            "{index_size}",
+            "STAR_index/STAR_",
+        ),
+        sjdbOverhang = "{index_size}",
+    singularity:
+        "docker://zavolab/star:2.6.0a"
+    threads: 12
+    log:
+        os.path.join(
+            config['log_dir'],
+            "{organism}_{index_size}_create_index_star.log",
+        )
+    shell:
+        "(mkdir -p {params.output_dir}; \
+        chmod -R 777 {params.output_dir}; \
+        STAR \
+        --runMode genomeGenerate \
+        --sjdbOverhang {params.sjdbOverhang} \
+        --genomeDir {params.output_dir} \
+        --genomeFastaFiles {input.genome} \
+        --runThreadN {threads} \
+        --outFileNamePrefix {params.outFileNamePrefix} \
+        --sjdbGTFfile {input.gtf}) &> {log}"
 
 
 rule create_index_salmon:
-	'''Create index for salmon quantification'''
-	input:
-		transcriptome = lambda wildcards: samples_table['tr_fasta_filtered'][samples_table["organism"]==wildcards.organism][0]
-	output:
-		index = directory(os.path.join(
-			config["salmon_indexes"],
-			"{organism}",
-			"{kmer}",
-			"salmon.idx"))
-
-	params:
-		kmerLen = "{kmer}"
-	singularity:
-		"docker://zavolab/salmon:0.11.0"
-	log:
-		os.path.join(config["local_log"], "{organism}_{kmer}_create_index_salmon.log")
-	threads:	8
-	shell:
-		"(salmon index \
-		--transcripts {input.transcriptome} \
-		--index {output.index} \
-		--kmerLen {params.kmerLen} \
-		--threads {threads}) &> {log}"
+    """Create index for Salmon quantification"""
+    input:
+        transcriptome = lambda wildcards:
+            samples_table['tr_fasta_filtered'][
+                samples_table['organism'] == wildcards.organism
+            ][0]
+    output:
+        index = directory(
+            os.path.join(
+                config['salmon_indexes'],
+                "{organism}",
+                "{kmer}",
+                "salmon.idx",
+            )
+        ),
+    params:
+        kmerLen = "{kmer}",
+    singularity:
+        "docker://zavolab/salmon:0.11.0"
+    log:
+        os.path.join(
+            config['log_dir'],
+            "{organism}_{kmer}_create_index_salmon.log"
+        )
+    threads: 8
+    shell:
+        "(salmon index \
+        --transcripts {input.transcriptome} \
+        --index {output.index} \
+        --kmerLen {params.kmerLen} \
+        --threads {threads}) &> {log}"
 
 
 rule create_index_kallisto:
-	'''Create index for running Kallisto'''
-	input:
-		transcriptome = lambda wildcards: samples_table['tr_fasta_filtered'][samples_table["organism"]==wildcards.organism][0]
-	output:
-		index = os.path.join(
-				config["kallisto_indexes"],
-				"{organism}",
-				"kallisto.idx")
-	params:
-		output_dir = os.path.join(
-				config["kallisto_indexes"],
-				"{organism}")
-	singularity:
-		"docker://zavolab/kallisto:0.46.1"
-	log:
-		os.path.join(config["local_log"], "{organism}_create_index_kallisto.log")
-	shell:
-		"(mkdir -p {params.output_dir}; \
-		chmod -R 777 {params.output_dir}; \
-		kallisto index -i {output.index} {input.transcriptome}) &> {log}"
+    """Create index for Kallisto quantification"""
+    input:
+        transcriptome = lambda wildcards:
+            samples_table['tr_fasta_filtered'][
+                samples_table['organism'] == wildcards.organism
+            ][0],
+    output:
+        index = os.path.join(
+            config['kallisto_indexes'],
+            "{organism}",
+            "kallisto.idx",
+        ),
+    params:
+        output_dir = os.path.join(
+            config['kallisto_indexes'],
+            "{organism}",
+        ),
+    singularity:
+        "docker://zavolab/kallisto:0.46.1"
+    log:
+        os.path.join(
+            config['log_dir'],
+            "{organism}_create_index_kallisto.log"
+        )
+    shell:
+        "(mkdir -p {params.output_dir}; \
+        chmod -R 777 {params.output_dir}; \
+        kallisto index -i {output.index} {input.transcriptome}) &> {log}"
 
 
 rule extract_transcripts_as_bed12:
-	''' Extract transcripts: from GTF into BED12 format'''
-	input:
-		gtf =lambda wildcards: samples_table["gtf"][0]
-	output:
-		bed12 = os.path.join(
-			config["output_dir"],
-			"full_transcripts_protein_coding.bed")
-	singularity:
-		"docker://zavolab/gtf_transcript_type_to_bed12:0.1.0"
-	threads: 1
-	log:
-		os.path.join( config["local_log"], "extract_transcripts_as_bed12.log")
-	shell:
-		"gtf_transcript_type_to_bed12.pl \
+    """Convert transcripts to BED12 format"""
+    input:
+        gtf = lambda wildcards:
+            samples_table['gtf'][0],
+    output:
+        bed12 = os.path.join(
+            config['output_dir'],
+            "full_transcripts_protein_coding.bed",
+        ),
+    singularity:
+        "docker://zavolab/gtf_transcript_type_to_bed12:0.1.0"
+    threads: 1
+    log:
+        os.path.join(
+            config['log_dir'],
+            "extract_transcripts_as_bed12.log",
+        )
+    shell:
+        "gtf_transcript_type_to_bed12.pl \
         --anno={input.gtf} \
         --type=protein_coding \
         1> {output.bed12} \
@@ -162,39 +257,48 @@ rule extract_transcripts_as_bed12:
 
 
 rule calculate_TIN_scores:
-	'''Calculate TIN score'''
-	input:
-		bai = os.path.join(
-			config["output_dir"],
-			"{seqmode}",
-			"{sample}",
-			"map_genome",
-			"{sample}_Aligned.sortedByCoord.out.bam.bai"),
-		transcripts_bed12 = os.path.join(
-			config["output_dir"],
-			"full_transcripts_protein_coding.bed")
-	output:
-		TIN_score = os.path.join(
-			config["output_dir"],
-			"{seqmode}",
-			"{sample}",
-			"TIN",
-			"TIN_score.tsv")
-	params:
-		bam = os.path.join(
-			config["output_dir"],
-			"{seqmode}",
-			"{sample}",
-			"map_genome",
-			"{sample}_Aligned.sortedByCoord.out.bam"),
-		sample = "{sample}"
-	log:
-		os.path.join(config["local_log"], "{seqmode}", "{sample}", "calculate_TIN_scores.log")
-	threads:	8
-	singularity:
-		"docker://zavolab/tin_score_calculation:0.1.0"
-	shell:
-		"tin_score_calculation.py \
+    """Caluclate transcript integrity (TIN) score"""
+    input:
+        bai = os.path.join(
+            config['output_dir'],
+            "{seqmode}",
+            "{sample}",
+            "map_genome",
+            "{sample}_Aligned.sortedByCoord.out.bam.bai"
+        ),
+        transcripts_bed12 = os.path.join(
+            config['output_dir'],
+            "full_transcripts_protein_coding.bed"
+        ),
+    output:
+        TIN_score = os.path.join(
+            config['output_dir'],
+            "{seqmode}",
+            "{sample}",
+            "TIN",
+            "TIN_score.tsv",
+        ),
+    params:
+        bam = os.path.join(
+            config['output_dir'],
+            "{seqmode}",
+            "{sample}",
+            "map_genome",
+            "{sample}_Aligned.sortedByCoord.out.bam"
+        ),
+        sample = "{sample}",
+    log:
+        os.path.join(
+            config['log_dir'],
+            "{seqmode}",
+            "{sample}",
+            "calculate_TIN_scores.log",
+        )
+    threads: 8
+    singularity:
+        "docker://zavolab/tin_score_calculation:0.1.0"
+    shell:
+        "tin_score_calculation.py \
         -i {params.bam} \
         -r {input.transcripts_bed12} \
         -c 0 \
diff --git a/scripts/labkey_to_snakemake.py b/scripts/labkey_to_snakemake.py
index d39db9c8878acdbbe1b110ba29864076ed8e5d5d..b6b9569b15d669afa97e785ff2bc83f9360351c8 100755
--- a/scripts/labkey_to_snakemake.py
+++ b/scripts/labkey_to_snakemake.py
@@ -305,12 +305,12 @@ def main():
     # Read file and infer read size for sjdbovwerhang
     with open(options.config_file, 'w') as config_file:
         config_file.write('''---
-  output_dir: "results"
-  local_log: "local_log"
-  star_indexes: "results/star_indexes"
-  kallisto_indexes: "results/kallisto_indexes"
   samples: "'''+ options.samples_table + '''"
-  salmon_indexes: "results/salmon_indexes"
+  output_dir: "results/"
+  log_dir: "logs/"
+  kallisto_indexes: "results/kallisto_indexes/"
+  salmon_indexes: "results/salmon_indexes/"
+  star_indexes: "results/star_indexes/"
 ...''')
 
     sys.stdout.write('Create snakemake table finished successfully...\n')
diff --git a/tests/input_files/cluster.json b/tests/input_files/cluster.json
index eaafcd3d52f53b015f6e4f8b1cde4e2838cd6b02..f0456181eb00ec2ee961050096d07b6422c48930 100644
--- a/tests/input_files/cluster.json
+++ b/tests/input_files/cluster.json
@@ -6,7 +6,7 @@
     "threads": "1",
     "mem": "4G",
     "name": "{rule}.{wildcards}",
-    "out": "$PWD/logs/cluster_log/{rule}.{wildcards}-%j-%N.out"
+    "out": "logs/cluster/{rule}.{wildcards}-%j-%N.out"
   },
   "generate_segemehl_index_other_RNAs":
   {
diff --git a/tests/input_files/config.yaml b/tests/input_files/config.yaml
index 7697b12bf284d2c9c819610838b64843c8290bc1..b0a3f41c4216d08e4528f30cc82be02f0bb045db 100644
--- a/tests/input_files/config.yaml
+++ b/tests/input_files/config.yaml
@@ -1,8 +1,8 @@
 ---
-  output_dir: "results"
-  local_log: "local_log"
-  star_indexes: "results/star_indexes"
-  kallisto_indexes: "results/kallisto_indexes"
   samples: "../input_files/samples.tsv"
-  salmon_indexes: "results/salmon_indexes"
+  output_dir: "results/"
+  log_dir: "logs/"
+  kallisto_indexes: "results/kallisto_indexes/"
+  salmon_indexes: "results/salmon_indexes/"
+  star_indexes: "results/star_indexes/"
 ...
diff --git a/tests/test_create_dag_image/test.sh b/tests/test_create_dag_image/test.sh
index 0732292b15fe05802e9a7ef2a93f69e7c1b0ade9..afd8de4c0c0ca2cb86c3773c68477729a5395b37 100755
--- a/tests/test_create_dag_image/test.sh
+++ b/tests/test_create_dag_image/test.sh
@@ -4,6 +4,7 @@
 cleanup () {
     rc=$?
     rm -rf .snakemake
+    rm -rf logs/
     cd $user_dir
     echo "Exit status: $rc"
 }
diff --git a/tests/test_create_rule_graph/test.sh b/tests/test_create_rule_graph/test.sh
index b232a2e53b840e99708010cd98e2dc07edf3f4ad..51e538324c23a9514093427d7cd4db1a6a7123b2 100755
--- a/tests/test_create_rule_graph/test.sh
+++ b/tests/test_create_rule_graph/test.sh
@@ -4,6 +4,7 @@
 cleanup () {
     rc=$?
     rm -rf .snakemake
+    rm -rf logs/
     cd $user_dir
     echo "Exit status: $rc"
 }
diff --git a/tests/test_integration_workflow/test.local.sh b/tests/test_integration_workflow/test.local.sh
index 42e02fa41d021c0ffc7b7bcb33a02d18518f8dfd..ec650632cdc438ecc8e41e2e2e50e9e5193d95da 100755
--- a/tests/test_integration_workflow/test.local.sh
+++ b/tests/test_integration_workflow/test.local.sh
@@ -5,7 +5,6 @@ cleanup () {
     rc=$?
     rm -rf .java/
     rm -rf .snakemake/
-    rm -rf local_log/
     rm -rf logs/
     rm -rf results/
     cd $user_dir
@@ -20,7 +19,6 @@ set -x  # facilitates debugging by printing out executed commands
 user_dir=$PWD
 script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
 cd $script_dir
-mkdir -p logs/local_log
 
 # Run tests
 snakemake \
diff --git a/tests/test_integration_workflow/test.slurm.sh b/tests/test_integration_workflow/test.slurm.sh
index 67df1e9cc6929318c63d6081d7d19e4c5e133cea..00aacd131ccff4c3cc1896a2db91a852c57ea841 100755
--- a/tests/test_integration_workflow/test.slurm.sh
+++ b/tests/test_integration_workflow/test.slurm.sh
@@ -5,7 +5,6 @@ cleanup () {
     rc=$?
     rm -rf .java/
     rm -rf .snakemake/
-    rm -rf local_log/
     rm -rf logs/
     rm -rf results/
     cd $user_dir
@@ -20,8 +19,6 @@ set -x  # facilitates debugging by printing out executed commands
 user_dir=$PWD
 script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
 cd $script_dir
-mkdir -p logs/cluster_log
-mkdir -p logs/local_log
 
 # Run tests
 snakemake \
diff --git a/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5 b/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5
index 1dcb38fb810a501c33629ba2105aaed0794bca15..90bb3be03674c8c58697c0d1e488023d342d7772 100644
--- a/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5
+++ b/tests/test_scripts_labkey_to_snakemake_api/expected_output.md5
@@ -1,2 +1,2 @@
-95fb0448dc6871cb415012d254260c5a  config.yaml
+ba5ae0649d1fb82d94f8d19481498ffd  config.yaml
 9aece9e4acb17143b5e8f627968e03a5  samples.tsv
diff --git a/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5 b/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5
index 1dcb38fb810a501c33629ba2105aaed0794bca15..90bb3be03674c8c58697c0d1e488023d342d7772 100644
--- a/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5
+++ b/tests/test_scripts_labkey_to_snakemake_table/expected_output.md5
@@ -1,2 +1,2 @@
-95fb0448dc6871cb415012d254260c5a  config.yaml
+ba5ae0649d1fb82d94f8d19481498ffd  config.yaml
 9aece9e4acb17143b5e8f627968e03a5  samples.tsv
diff --git a/workflow/rules/paired_end.snakefile.smk b/workflow/rules/paired_end.snakefile.smk
index 53ef308fe85833f95f128e4b8b4c4e2ef4c298e7..1d1f7c0d3dd44b9d31a60159a5a5dd3680da4675 100644
--- a/workflow/rules/paired_end.snakefile.smk
+++ b/workflow/rules/paired_end.snakefile.smk
@@ -13,7 +13,7 @@ rule pe_fastqc:
 	singularity:
 		"docker://zavolab/fastqc:0.11.8"
 	log:
-		os.path.join(config["local_log"],"paired_end", "{sample}", "fastqc.log")
+		os.path.join(config["log_dir"],"paired_end", "{sample}", "fastqc.log")
 	shell:
 		"(mkdir -p {output.outdir1}; \
 		mkdir -p {output.outdir2}; \
@@ -51,7 +51,7 @@ rule pe_remove_adapters_cutadapt:
 		"docker://zavolab/cutadapt:1.16"
 	threads: 8
 	log:
-		os.path.join( config["local_log"], "paired_end", "{sample}", "remove_adapters_cutadapt.log")
+		os.path.join( config["log_dir"], "paired_end", "{sample}", "remove_adapters_cutadapt.log")
 	shell:
 		"(cutadapt \
 		-e 0.1 \
@@ -102,7 +102,7 @@ rule pe_remove_polya_cutadapt:
 		"docker://zavolab/cutadapt:1.16"
 	threads: 8
 	log:
-		os.path.join( config["local_log"], "paired_end", "{sample}", "remove_polya_cutadapt.log")
+		os.path.join( config["log_dir"], "paired_end", "{sample}", "remove_polya_cutadapt.log")
 	shell:
 		'(cutadapt \
 		--match-read-wildcards \
@@ -181,7 +181,7 @@ rule pe_map_genome_star:
 	threads: 12
 
 	log:
-		os.path.join( config["local_log"], "paired_end", "{sample}", "map_genome_star.log")
+		os.path.join( config["log_dir"], "paired_end", "{sample}", "map_genome_star.log")
 
 	shell:
 		"(STAR \
@@ -226,7 +226,7 @@ rule pe_index_genomic_alignment_samtools:
     singularity:
         "docker://zavolab/samtools:1.8"
     log:
-    	os.path.join( config["local_log"], "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}"
@@ -275,7 +275,7 @@ rule pe_quantification_salmon:
 		libType = lambda wildcards:
 			samples_table.loc[wildcards.sample, 'libtype']
 	log:
-		os.path.join(config["local_log"], "paired_end", "{sample}", "genome_quantification_salmon.log")
+		os.path.join(config["log_dir"], "paired_end", "{sample}", "genome_quantification_salmon.log")
 	threads:	6
 	singularity:
 		"docker://zavolab/salmon:0.11.0"
@@ -330,7 +330,7 @@ rule pe_genome_quantification_kallisto:
 		"docker://zavolab/kallisto:0.46.1"
 	threads:	8
 	log:
-		os.path.join(config["local_log"], "paired_end", "{sample}", "genome_quantification_kallisto.log")
+		os.path.join(config["log_dir"], "paired_end", "{sample}", "genome_quantification_kallisto.log")
 	shell:
 		"(kallisto quant \
 		-i {input.index} \
diff --git a/workflow/rules/single_end.snakefile.smk b/workflow/rules/single_end.snakefile.smk
index 0874686228ef9b603d02a808f20b1d5abc42fd96..08d4d228e8e18cf8e6c19208ccc87adaa7aa5610 100644
--- a/workflow/rules/single_end.snakefile.smk
+++ b/workflow/rules/single_end.snakefile.smk
@@ -10,7 +10,7 @@ rule fastqc:
 	singularity:
 		"docker://zavolab/fastqc:0.11.8"
 	log:
-		os.path.join(config["local_log"], "single_end", "{sample}", "fastqc.log")
+		os.path.join(config["log_dir"], "single_end", "{sample}", "fastqc.log")
 	shell:
 		"(mkdir -p {output.outdir}; \
 		fastqc \
@@ -34,7 +34,7 @@ rule remove_adapters_cutadapt:
 		"docker://zavolab/cutadapt:1.16"
 	threads: 8
 	log:
-		os.path.join(config["local_log"], "single_end", "{sample}", "remove_adapters_cutadapt.log")
+		os.path.join(config["log_dir"], "single_end", "{sample}", "remove_adapters_cutadapt.log")
 	shell:
 		"(cutadapt \
 		-e 0.1 \
@@ -61,7 +61,7 @@ rule remove_polya_cutadapt:
 		"docker://zavolab/cutadapt:1.16"
 	threads: 8
 	log:
-		os.path.join(config["local_log"], "single_end", "{sample}", "remove_polya_cutadapt.log")
+		os.path.join(config["log_dir"], "single_end", "{sample}", "remove_polya_cutadapt.log")
 	shell:
 		"(cutadapt \
 		--match-read-wildcards \
@@ -117,7 +117,7 @@ rule map_genome_star:
 		"docker://zavolab/star:2.6.0a"
 	threads: 12
 	log:
-		os.path.join(config["local_log"], "single_end", "{sample}", "map_genome_star.log")
+		os.path.join(config["log_dir"], "single_end", "{sample}", "map_genome_star.log")
 	shell:
 		"(STAR \
 		--runMode alignReads \
@@ -160,7 +160,7 @@ rule index_genomic_alignment_samtools:
 		"docker://zavolab/samtools:1.8"
 	threads: 1
 	log:
-		os.path.join(config["local_log"], "single_end", "{sample}", "index_genomic_alignment_samtools.log")
+		os.path.join(config["log_dir"], "single_end", "{sample}", "index_genomic_alignment_samtools.log")
 	shell:
 		"(samtools index {input.bam} {output.bai};) &> {log}"
 
@@ -202,7 +202,7 @@ rule quantification_salmon:
 		libType = lambda wildcards:
 	 			samples_table.loc[wildcards.sample, "libtype"]
 	log:
-		os.path.join(config["local_log"], "single_end", "{sample}", "quantification_salmon.log")
+		os.path.join(config["log_dir"], "single_end", "{sample}", "quantification_salmon.log")
 	threads:    12
 	singularity:
 		"docker://zavolab/salmon:0.11.0"
@@ -250,7 +250,7 @@ rule genome_quantification_kallisto:
 		directionality = lambda wildcards: samples_table.loc[wildcards.sample, 'kallisto_directionality']
 	threads:	    8
 	log:
-		os.path.join(config["local_log"],"kallisto_align_{sample}.log")
+		os.path.join(config["log_dir"],"kallisto_align_{sample}.log")
 	singularity:
 		"docker://zavolab/kallisto:0.46.1"
 	shell: