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