From bc91a90e3fae398498fa057684c5cb9c481f794b Mon Sep 17 00:00:00 2001
From: Laurent Modolo <laurent@modolo.fr>
Date: Mon, 17 Sep 2018 16:36:45 +0200
Subject: [PATCH] sambamba: add nf files

---
 src/nf_modules/sambamba/index_bams.config | 18 +++++++++++++++
 src/nf_modules/sambamba/index_bams.nf     | 26 ++++++++++++++++++++++
 src/nf_modules/sambamba/sort_bams.config  | 18 +++++++++++++++
 src/nf_modules/sambamba/sort_bams.nf      | 26 ++++++++++++++++++++++
 src/nf_modules/sambamba/split_bams.config | 18 +++++++++++++++
 src/nf_modules/sambamba/split_bams.nf     | 27 +++++++++++++++++++++++
 src/nf_modules/sambamba/tests.sh          | 14 ++++++++++++
 7 files changed, 147 insertions(+)
 create mode 100644 src/nf_modules/sambamba/index_bams.config
 create mode 100644 src/nf_modules/sambamba/index_bams.nf
 create mode 100644 src/nf_modules/sambamba/sort_bams.config
 create mode 100644 src/nf_modules/sambamba/sort_bams.nf
 create mode 100644 src/nf_modules/sambamba/split_bams.config
 create mode 100644 src/nf_modules/sambamba/split_bams.nf
 create mode 100755 src/nf_modules/sambamba/tests.sh

diff --git a/src/nf_modules/sambamba/index_bams.config b/src/nf_modules/sambamba/index_bams.config
new file mode 100644
index 0000000..0830a67
--- /dev/null
+++ b/src/nf_modules/sambamba/index_bams.config
@@ -0,0 +1,18 @@
+profiles {
+  docker {
+    docker.temp = 'auto'
+    docker.enabled = true
+    process {
+      $index_bam {
+        container = "sambamba:0.6.7"
+      }
+    }
+  }
+  sge {
+    process{
+      $index_bam {
+        beforeScript = "module purge; module load sambamba/0.6.7"
+      }
+    }
+  }
+}
diff --git a/src/nf_modules/sambamba/index_bams.nf b/src/nf_modules/sambamba/index_bams.nf
new file mode 100644
index 0000000..0dc2dac
--- /dev/null
+++ b/src/nf_modules/sambamba/index_bams.nf
@@ -0,0 +1,26 @@
+params.bam = "$baseDir/data/bam/*.bam"
+
+log.info "bams files : ${params.bam}"
+
+Channel
+  .fromPath( params.bam )
+  .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
+  .map { it -> [(it.baseName =~ /([^\.]*)/)[0][1], it]}
+  .set { bam_files }
+
+process index_bam {
+  tag "$file_id"
+  cpus 4
+
+  input:
+    set file_id, file(bam) from bam_files
+
+  output:
+    set file_id, "*.bam*" into indexed_bam_file
+
+  script:
+"""
+sambamba index -t ${task.cpus} ${bam}
+"""
+}
+
diff --git a/src/nf_modules/sambamba/sort_bams.config b/src/nf_modules/sambamba/sort_bams.config
new file mode 100644
index 0000000..2e335ad
--- /dev/null
+++ b/src/nf_modules/sambamba/sort_bams.config
@@ -0,0 +1,18 @@
+profiles {
+  docker {
+    docker.temp = 'auto'
+    docker.enabled = true
+    process {
+      $sort_bam {
+        container = "sambamba:0.6.7"
+      }
+    }
+  }
+  sge {
+    process{
+      $sort_bam {
+        beforeScript = "module purge; module load sambamba/0.6.7"
+      }
+    }
+  }
+}
diff --git a/src/nf_modules/sambamba/sort_bams.nf b/src/nf_modules/sambamba/sort_bams.nf
new file mode 100644
index 0000000..ac610cd
--- /dev/null
+++ b/src/nf_modules/sambamba/sort_bams.nf
@@ -0,0 +1,26 @@
+params.bam = "$baseDir/data/bam/*.bam"
+
+log.info "bams files : ${params.bam}"
+
+Channel
+  .fromPath( params.bam )
+  .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
+  .map { it -> [(it.baseName =~ /([^\.]*)/)[0][1], it]}
+  .set { bam_files }
+
+process sort_bam {
+  tag "$file_id"
+  cpus 4
+
+  input:
+    set file_id, file(bam) from bam_files
+
+  output:
+    set file_id, "*_sorted.bam" into sorted_bam_files
+
+  script:
+"""
+sambamba sort -t ${task.cpus} -o ${file_id}_sorted.bam ${bam}
+"""
+}
+
diff --git a/src/nf_modules/sambamba/split_bams.config b/src/nf_modules/sambamba/split_bams.config
new file mode 100644
index 0000000..d2182ba
--- /dev/null
+++ b/src/nf_modules/sambamba/split_bams.config
@@ -0,0 +1,18 @@
+profiles {
+  docker {
+    docker.temp = 'auto'
+    docker.enabled = true
+    process {
+      $split_bam {
+        container = "sambamba:0.6.7"
+      }
+    }
+  }
+  sge {
+    process{
+      $split_bam {
+        beforeScript = "module purge; module load sambamba/0.6.7"
+      }
+    }
+  }
+}
diff --git a/src/nf_modules/sambamba/split_bams.nf b/src/nf_modules/sambamba/split_bams.nf
new file mode 100644
index 0000000..ba64d2e
--- /dev/null
+++ b/src/nf_modules/sambamba/split_bams.nf
@@ -0,0 +1,27 @@
+params.bam = "$baseDir/data/bam/*.bam"
+
+log.info "bams files : ${params.bam}"
+
+Channel
+  .fromPath( params.bam )
+  .ifEmpty { error "Cannot find any bam files matching: ${params.bam}" }
+  .map { it -> [(it.baseName =~ /([^\.]*)/)[0][1], it]}
+  .set { bam_files }
+
+process split_bam {
+  tag "$file_id"
+  cpus 4
+
+  input:
+    set file_id, file(bam) from bam_files
+
+  output:
+    set file_id, "*_forward.bam*" into forward_bam_files
+    set file_id, "*_reverse.bam*" into reverse_bam_files
+  script:
+"""
+sambamba view -t ${task.cpus} -h -F "strand == '+'" ${bam} > ${file_id}_forward.bam
+sambamba view -t ${task.cpus} -h -F "strand == '-'" ${bam} > ${file_id}_reverse.bam
+"""
+}
+
diff --git a/src/nf_modules/sambamba/tests.sh b/src/nf_modules/sambamba/tests.sh
new file mode 100755
index 0000000..d76db22
--- /dev/null
+++ b/src/nf_modules/sambamba/tests.sh
@@ -0,0 +1,14 @@
+./nextflow src/nf_modules/sambamba/sort_bams.nf \
+  -c src/nf_modules/sambamba/sort_bams.config \
+  -profile docker \
+  --bam "data/tiny_dataset/map/tiny_v2.bam"
+
+./nextflow src/nf_modules/sambamba/index_bams.nf \
+  -c src/nf_modules/sambamba/index_bams.config \
+  -profile docker \
+  --bam "data/tiny_dataset/map/tiny_v2.sort.bam"
+
+./nextflow src/nf_modules/sambamba/split_bams.nf \
+  -c src/nf_modules/sambamba/split_bams.config \
+  -profile docker \
+  --bam "data/tiny_dataset/map/tiny_v2.bam"
-- 
GitLab