From 355fc1feca9852de072700ab74a0df0e39265433 Mon Sep 17 00:00:00 2001 From: Iris Mestres <iris.mestrespascual@unibas.ch> Date: Mon, 20 Feb 2023 12:26:56 +0100 Subject: [PATCH] Add rule to sort isomiRs annotation file --- workflow/rules/quantify.smk | 192 ++++++++++++++++++++++++------------ 1 file changed, 129 insertions(+), 63 deletions(-) diff --git a/workflow/rules/quantify.smk b/workflow/rules/quantify.smk index 90fd572..292ffa2 100644 --- a/workflow/rules/quantify.smk +++ b/workflow/rules/quantify.smk @@ -8,7 +8,6 @@ # USAGE (from the file's directory): # # snakemake \ -# --snakefile="quanitfy.smk" \ # --cores 4 \ # --use-singularity \ # --singularity-args "--bind $PWD/../" \ @@ -16,9 +15,6 @@ # --rerun-incomplete \ # --verbose # -# IMPORTANT when executing this file alone: -## * You must modify the config.yaml. -## * Uncomment the configfile line. ################################################################################ import os @@ -133,6 +129,72 @@ rule sort_alignments: ) &> {log}" +############################################################################### +### Sort isomiRs +############################################################################### + + +rule sort_isomirs: + input: + isomirs=config["isomirs_anno"], + output: + isomir=os.path.join( + config["output_dir"], "sorted_isomirs.bed" + ), + params: + cluster_log=os.path.join( + config["cluster_log"], "sortisomirs.log" + ), + log: + os.path.join(config["local_log"], "sortisomirs.log"), + resources: + mem=4, + threads=8, + singularity: + "docker://zavolab/ubuntu:18.04" + shell: + "(sort \ + -k1,1 \ + -k2,2n \ + {input.isomirs} \ + > {output.isomir} \ + ) &> {log}" + +############################################################################### +### pre miRNAs intersection +############################################################################### + + +rule intersect_pre_mirna: + input: + alignment=os.path.join( + config["output_dir"], "{sample}", "sorted.alignments.bed12" + ), + mirna=config["pre_mirnas_anno"], + output: + intersect=os.path.join( + config["output_dir"], "{sample}", "intersect_pre_mirna.bed" + ), + params: + cluster_log=os.path.join( + config["cluster_log"], "intersection_pre_mirna_{sample}.log" + ), + log: + os.path.join(config["local_log"], "intersection_pre_mirna_{sample}.log"), + singularity: + "docker://zavolab/bedtools:2.27.0" + shell: + "(bedtools intersect \ + -wao \ + -s \ + -F 1 \ + -sorted \ + -b {input.alignment} \ + -a {input.mirna} \ + > {output.intersect} \ + ) &> {log}" + + ############################################################################### ### miRNAs intersection ############################################################################### @@ -161,6 +223,7 @@ rule intersect_mirna: -wao \ -s \ -F 1 \ + -f 1 \ -sorted \ -b {input.alignment} \ -a {input.mirna} \ @@ -173,34 +236,37 @@ rule intersect_mirna: ############################################################################### -# rule intersect_isomirs: -# input: -# alignment=os.path.join( -# config["output_dir"], "{sample}", "sorted.alignments.bed12" -# ), -# isomirs=config["isomirs_anno"], -# output: -# intersect=os.path.join( -# config["output_dir"], "{sample}", "intersect_isomirs.bed" -# ), -# params: -# cluster_log=os.path.join( -# config["cluster_log"], "intersection_isomirs_{sample}.log" -# ), -# log: -# os.path.join(config["local_log"], "intersection_isomirs_{sample}.log"), -# singularity: -# "docker://zavolab/bedtools:2.27.0" -# shell: -# "(bedtools intersect \ -# -wao \ -# -s \ -# -F 1 \ -# -sorted \ -# -b {input.alignment} \ -# -a {input.isomirs} \ -# > {output.intersect} \ -# ) &> {log}" +rule intersect_isomirs: + input: + alignment=os.path.join( + config["output_dir"], "{sample}", "sorted.alignments.bed12" + ), + isomirs=os.path.join( + config["output_dir"], "sorted_isomirs.bed" + ), + output: + intersect=os.path.join( + config["output_dir"], "{sample}", "intersect_isomirs.bed" + ), + params: + cluster_log=os.path.join( + config["cluster_log"], "intersection_isomirs_{sample}.log" + ), + log: + os.path.join(config["local_log"], "intersection_isomirs_{sample}.log"), + singularity: + "docker://zavolab/bedtools:2.27.0" + shell: + "(bedtools intersect \ + -wao \ + -s \ + -F 1 \ + -f 1 \ + -sorted \ + -b {input.alignment} \ + -a {input.isomirs} \ + > {output.intersect} \ + ) &> {log}" ############################################################################### @@ -216,7 +282,7 @@ rule quant_mirna: script=os.path.join(config["scripts_dir"], "mirna_quantification.py"), output: table=os.path.join( - config["output_dir"], "TABLES", "miRNA_counts_{sample}" + config["output_dir"], "TABLES", "miRNA_counts_{sample}" ), params: cluster_log=os.path.join( @@ -246,7 +312,7 @@ rule quant_mirna: rule quant_mirna_pri: input: intersect=os.path.join( - config["output_dir"], "{sample}", "intersect_mirna.bed" + config["output_dir"], "{sample}", "intersect_pre_mirna.bed" ), script=os.path.join(config["scripts_dir"], "mirna_quantification.py"), output: @@ -286,34 +352,34 @@ rule quant_mirna_pri: ############################################################################### -# rule quant_isomirs: -# input: -# intersect=os.path.join( -# config["output_dir"], "{sample}", "intersect_isomirs.bed" -# ), -# script=os.path.join(config["scripts_dir"], "mirna_quantification.py"), -# output: -# table=os.path.join( -# config["output_dir"], "TABLES", "isomirs_counts_{sample}" -# ), -# params: -# cluster_log=os.path.join( -# config["cluster_log"], "quant_isomirs_{sample}.log" -# ), -# prefix=os.path.join( -# config["output_dir"], "TABLES", "isomirs_counts_{sample}" -# ), -# log: -# os.path.join(config["local_log"], "quant_isomirs_{sample}.log"), -# singularity: -# "docker://zavolab/python:3.6.5" -# shell: -# "(python \ -# {input.script} \ -# -i {input.intersect} \ -# --uniq=miRNA \ -# -p={params.prefix} \ -# ) &> {log}" +rule quant_isomirs: + input: + intersect=os.path.join( + config["output_dir"], "{sample}", "intersect_isomirs.bed" + ), + script=os.path.join(config["scripts_dir"], "mirna_quantification.py"), + output: + table=os.path.join( + config["output_dir"], "TABLES", "isomirs_counts_{sample}" + ), + params: + cluster_log=os.path.join( + config["cluster_log"], "quant_isomirs_{sample}.log" + ), + prefix=os.path.join( + config["output_dir"], "TABLES", "isomirs_counts_{sample}" + ), + log: + os.path.join(config["local_log"], "quant_isomirs_{sample}.log"), + singularity: + "docker://zavolab/python:3.6.5" + shell: + "(python \ + {input.script} \ + -i {input.intersect} \ + --uniq=miRNA \ + -p={params.prefix} \ + ) &> {log}" ############################################################################### @@ -350,4 +416,4 @@ rule merge_tables: --output_file {output.table} \ --prefix {params.prefix} \ --verbose \ - ) &> {log}" \ No newline at end of file + ) &> {log}" -- GitLab