diff --git a/src/nf_modules/sambamba/index_bams.config b/src/nf_modules/sambamba/index_bams.config new file mode 100644 index 0000000000000000000000000000000000000000..0830a67ad8b1f6dd8eb993ec1c64b8ba94777f3e --- /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 0000000000000000000000000000000000000000..0dc2dac682b103c043018bb9e7522eb2bfcf932a --- /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 0000000000000000000000000000000000000000..2e335ad319401bfa1a7e1422989a234e4faedecc --- /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 0000000000000000000000000000000000000000..ac610cdca146693df69d8b765928d406b36652b6 --- /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 0000000000000000000000000000000000000000..d2182ba92d4c6f7c40d8490ceca973e06becaad3 --- /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 0000000000000000000000000000000000000000..ba64d2e2b77eb3a9b24ec1355c2b3a68b95c7a4d --- /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 0000000000000000000000000000000000000000..d76db22cd3f3675675dbe660704ec114f1ba7b02 --- /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"