diff --git a/profiles/slurm-conda/config.yaml b/profiles/slurm-conda/config.yaml index dcf097604a0ff1cdb2a32f24eec2f347a196a342..2fb09692eb55b9db38d4a286bc603d6742a1c6b0 100644 --- a/profiles/slurm-conda/config.yaml +++ b/profiles/slurm-conda/config.yaml @@ -1,7 +1,6 @@ jobscript: "../slurm-jobscript.sh" cluster: "../slurm-submit.py" cluster-status: "../slurm-status.py" -config: "cluster_logs='logs/cluster'" snakefile: "../../workflow/Snakefile" cores: 256 jobs: 256 diff --git a/profiles/slurm-config.json b/profiles/slurm-config.json index 2de6092ffc6bd0352c332d6c7179d8d312fb365c..c64e5af63a203c568594b7b8d9bf6ac95339a694 100644 --- a/profiles/slurm-config.json +++ b/profiles/slurm-config.json @@ -6,7 +6,7 @@ "cpus-per-task": "1", "mem": "4G", "job-name": "{rule}.{wildcards}", - "output": "logs/cluster/{rule}.{wildcards}-%j-%N.out" + "output": "{params.cluster_log_path}/{rule}.{wildcards}-%j-%N.out" }, "create_index_star": { diff --git a/profiles/slurm-singularity/config.yaml b/profiles/slurm-singularity/config.yaml index 960bee6e95ca1380d882f7b101ec918d09724879..4fc0a6b90e85ead088aa17db3e950f6eb62f61d3 100644 --- a/profiles/slurm-singularity/config.yaml +++ b/profiles/slurm-singularity/config.yaml @@ -1,7 +1,6 @@ jobscript: "../slurm-jobscript.sh" cluster: "../slurm-submit.py" cluster-status: "../slurm-status.py" -config: "cluster_logs='logs/cluster'" snakefile: "../../workflow/Snakefile" cores: 256 jobs: 256 diff --git a/resources/config_schema.json b/resources/config_schema.json index 299c43a033d2102d4c96bd8c8dbc33fa66142ec9..d5b6ab9a2f352bb00136f4e6d4f8436cc3d2a3df 100644 --- a/resources/config_schema.json +++ b/resources/config_schema.json @@ -17,7 +17,7 @@ "type": "string", "description": "Path to log directory." }, - "cluster_logs": { + "cluster_log_dir": { "type": "string", "description": "Path to cluster log directory." }, diff --git a/tests/input_files/config.yaml b/tests/input_files/config.yaml index 1fc480c3f3231780b3678691b4ff0d8195b806a1..06a97048ad5453351b71613f20ac77671729bf84 100644 --- a/tests/input_files/config.yaml +++ b/tests/input_files/config.yaml @@ -3,6 +3,7 @@ samples: "../input_files/samples.tsv" output_dir: "results" log_dir: "logs" + cluster_log_dir: "logs/cluster" kallisto_indexes: "results/kallisto_indexes" salmon_indexes: "results/salmon_indexes" star_indexes: "results/star_indexes" diff --git a/workflow/Snakefile b/workflow/Snakefile index fb6b5a1e54679faf7d8fe8ac82090a1c39158ec7..6a53b1ff25226e89760195646fc0de6e0b35d6f4 100644 --- a/workflow/Snakefile +++ b/workflow/Snakefile @@ -164,6 +164,9 @@ rule start: "{sample}", "start", "{sample}.{mate}.fastq.gz") + + params: + cluster_log_path = config["cluster_log_dir"] log: stderr = os.path.join( @@ -208,6 +211,7 @@ rule fastqc: "{mate}")) params: + cluster_log_path = config["cluster_log_dir"], additional_params = parse_rule_config( rule_config, current_rule=current_rule, @@ -278,6 +282,7 @@ rule create_index_star: "chrName.txt") params: + cluster_log_path = config["cluster_log_dir"], output_dir = os.path.join( config['star_indexes'], "{organism}", @@ -357,6 +362,7 @@ rule extract_transcriptome: "transcriptome.fa")) params: + cluster_log_path = config["cluster_log_dir"], additional_params = parse_rule_config( rule_config, current_rule=current_rule, @@ -413,6 +419,9 @@ rule concatenate_transcriptome_and_genome: "transcriptome", "{organism}", "genome_transcriptome.fa")) + + params: + cluster_log_path = config["cluster_log_dir"] singularity: "docker://ubuntu:focal-20210416" @@ -456,6 +465,7 @@ rule create_index_salmon: "salmon.idx")) params: + cluster_log_path = config["cluster_log_dir"], kmerLen = "{kmer}", additional_params = parse_rule_config( rule_config, @@ -514,6 +524,7 @@ rule create_index_kallisto: "kallisto.idx") params: + cluster_log_path = config["cluster_log_dir"], output_dir = os.path.join( config['kallisto_indexes'], "{organism}"), @@ -564,6 +575,7 @@ rule extract_transcripts_as_bed12: "full_transcripts_protein_coding.bed")) params: + cluster_log_path = config["cluster_log_dir"], additional_params = parse_rule_config( rule_config, current_rule=current_rule, @@ -618,6 +630,7 @@ rule index_genomic_alignment_samtools: "{sample}.{seqmode}.Aligned.sortedByCoord.out.bam.bai") params: + cluster_log_path = config["cluster_log_dir"], additional_params = parse_rule_config( rule_config, current_rule=current_rule, @@ -696,6 +709,7 @@ rule calculate_TIN_scores: "TIN_score.tsv")) params: + cluster_log_path = config["cluster_log_dir"], sample = "{sample}", additional_params = parse_rule_config( rule_config, @@ -760,6 +774,7 @@ rule salmon_quantmerge_genes: "genes_{salmon_merge_on}.tsv") params: + cluster_log_path = config["cluster_log_dir"], salmon_in = expand( os.path.join( config["output_dir"], @@ -846,6 +861,7 @@ rule salmon_quantmerge_transcripts: "transcripts_{salmon_merge_on}.tsv") params: + cluster_log_path = config["cluster_log_dir"], salmon_in = expand( os.path.join( config["output_dir"], @@ -935,6 +951,7 @@ rule kallisto_merge_genes: "genes_counts.tsv") params: + cluster_log_path = config["cluster_log_dir"], dir_out = os.path.join( config["output_dir"], "summary_kallisto"), @@ -1020,6 +1037,7 @@ rule kallisto_merge_transcripts: "transcripts_counts.tsv") params: + cluster_log_path = config["cluster_log_dir"], dir_out = os.path.join( config["output_dir"], "summary_kallisto"), @@ -1086,6 +1104,7 @@ rule pca_salmon: "pca_salmon_{molecule}")) params: + cluster_log_path = config["cluster_log_dir"], additional_params = parse_rule_config( rule_config, current_rule=current_rule, @@ -1135,6 +1154,7 @@ rule pca_kallisto: "pca_kallisto_{molecule}")) params: + cluster_log_path = config["cluster_log_dir"], additional_params = parse_rule_config( rule_config, current_rule=current_rule, @@ -1230,6 +1250,7 @@ rule star_rpm: shadow: "full" params: + cluster_log_path = config["cluster_log_dir"], out_dir = lambda wildcards, output: os.path.dirname(output.str1), prefix = lambda wildcards, output: @@ -1327,6 +1348,9 @@ rule rename_star_rpm_for_alfa: "ALFA", "{unique}", "{sample}.{unique}.minus.bg")) + + params: + cluster_log_path = config["cluster_log_dir"] log: stderr = os.path.join( @@ -1380,6 +1404,7 @@ rule generate_alfa_index: "sorted_genes.unstranded.ALFA_index") params: + cluster_log_path = config["cluster_log_dir"], genome_index = "sorted_genes", out_dir = lambda wildcards, output: os.path.dirname(output.index_stranded), @@ -1475,6 +1500,7 @@ rule alfa_qc: "{sample}.ALFA_feature_counts.tsv") params: + cluster_log_path = config["cluster_log_dir"], out_dir = lambda wildcards, output: os.path.dirname(output.biotypes), genome_index = lambda wildcards, input: @@ -1542,6 +1568,7 @@ rule prepare_multiqc_config: "multiqc_config.yaml") params: + cluster_log_path = config["cluster_log_dir"], logo_path = config['report_logo'], multiqc_intro_text = config['report_description'], url = config['report_url'], @@ -1661,6 +1688,7 @@ rule multiqc_report: "multiqc_summary")) params: + cluster_log_path = config["cluster_log_dir"], results_dir = os.path.join( config["output_dir"]), log_dir = config["log_dir"], @@ -1720,6 +1748,7 @@ rule sort_bed_4_big: "{sample}_{unique}_{strand}.sorted.bg")) params: + cluster_log_path = config["cluster_log_dir"], additional_params = parse_rule_config( rule_config, current_rule=current_rule, @@ -1785,6 +1814,7 @@ rule prepare_bigWig: "{sample}_{unique}_{strand}.bw") params: + cluster_log_path = config["cluster_log_dir"], additional_params = parse_rule_config( rule_config, current_rule=current_rule, diff --git a/workflow/rules/paired_end.snakefile.smk b/workflow/rules/paired_end.snakefile.smk index 76a88f1dbb6f691f438136a088b73f374920d4dd..d0a9bc20bb7616a9f41c1bbd7e9ff449062b833d 100644 --- a/workflow/rules/paired_end.snakefile.smk +++ b/workflow/rules/paired_end.snakefile.smk @@ -31,6 +31,7 @@ rule pe_remove_adapters_cutadapt: "{sample}.pe.remove_adapters_mate2.fastq.gz")) params: + cluster_log_path = config["cluster_log_dir"], adapter_3_mate1 = lambda wildcards: get_sample('fq1_3p', search_id='index', search_value=wildcards.sample), adapter_5_mate1 = lambda wildcards: @@ -118,6 +119,7 @@ rule pe_remove_polya_cutadapt: "{sample}.pe.remove_polya_mate2.fastq.gz")) params: + cluster_log_path = config["cluster_log_dir"], polya_3_mate1 = lambda wildcards: get_sample( 'fq1_polya_3p', @@ -234,6 +236,7 @@ rule pe_map_genome_star: shadow: "minimal" params: + cluster_log_path = config["cluster_log_dir"], sample_id = "{sample}", index = lambda wildcards: os.path.abspath(os.path.join( @@ -385,6 +388,7 @@ rule pe_quantification_salmon: shadow: "minimal" params: + cluster_log_path = config["cluster_log_dir"], output_dir = os.path.join( config["output_dir"], "samples", @@ -485,6 +489,7 @@ rule pe_genome_quantification_kallisto: shadow: "minimal" params: + cluster_log_path = config["cluster_log_dir"], output_dir = os.path.join( config["output_dir"], "samples", diff --git a/workflow/rules/single_end.snakefile.smk b/workflow/rules/single_end.snakefile.smk index cd7bb1da424cce1066ebc4e6531dd3ea48204c91..7dfb2c2e2ff38968b61d29fc22773dfe45c82103 100644 --- a/workflow/rules/single_end.snakefile.smk +++ b/workflow/rules/single_end.snakefile.smk @@ -19,6 +19,7 @@ rule remove_adapters_cutadapt: "{sample}.se.remove_adapters_mate1.fastq.gz")) params: + cluster_log_path = config["cluster_log_dir"], adapters_3 = lambda wildcards: get_sample( 'fq1_3p', @@ -93,6 +94,7 @@ rule remove_polya_cutadapt: "{sample}.se.remove_polya_mate1.fastq.gz")) params: + cluster_log_path = config["cluster_log_dir"], polya_3 = lambda wildcards: get_sample( 'fq1_polya_3p', @@ -184,6 +186,7 @@ rule map_genome_star: shadow: "minimal" params: + cluster_log_path = config["cluster_log_dir"], sample_id = "{sample}", index = lambda wildcards: os.path.abspath(os.path.join( @@ -324,6 +327,7 @@ rule quantification_salmon: shadow: "minimal" params: + cluster_log_path = config["cluster_log_dir"], output_dir = os.path.join( config["output_dir"], "samples", @@ -428,6 +432,7 @@ rule genome_quantification_kallisto: shadow: "minimal" params: + cluster_log_path = config["cluster_log_dir"], output_dir = os.path.join( config["output_dir"], "samples",