diff --git a/src/nf_modules/bowtie2/main.nf b/src/nf_modules/bowtie2/main.nf new file mode 100644 index 0000000000000000000000000000000000000000..46b30a7669d7216e4dd5f13029b07741f648f567 --- /dev/null +++ b/src/nf_modules/bowtie2/main.nf @@ -0,0 +1,105 @@ +bowtie_version = "2.3.4.1" +container_url = "lbmc/bowtie2:${bowtie_version}" + +process index_fasta { + container = "${container_url}" + label "big_mem_multi_cpus" + tag "$fasta.baseName" + publishDir "results/mapping/index/", mode: 'copy' + + input: + path fasta + + output: + path "*.index*", emit: index + path "*_report.txt", emit: report + + script: +""" +bowtie2-build --threads ${task.cpus} \ + ${fasta} \ + ${fasta.baseName}.index &> \ + ${fasta.baseName}_bowtie2_index_report.txt + +if grep -q "Error" ${fasta.baseName}_bowtie2_index_report.txt; then + exit 1 +fi +""" +} + + +process mapping_fastq_pairedend { + container = "${container_url}" + label "big_mem_multi_cpus" + tag "$pair_id" + publishDir "results/mapping/bams/", mode: 'copy' + + input: + tuple val(pair_id), path(reads) + path index.collect() + + output: + tuple val(pair_id), path("*.bam"), emit: bam + path "*_report.txt", emit: report + + script: + index_id = index[0] + for (index_file in index) { + if (index_file =~ /.*\.1\.bt2/ && !(index_file =~ /.*\.rev\.1\.bt2/)) { + index_id = ( index_file =~ /(.*)\.1\.bt2/)[0][1] + } + } +""" +bowtie2 --very-sensitive \ + -p ${task.cpus} \ + -x ${index_id} \ + -1 ${reads[0]} \ + -2 ${reads[1]} 2> \ + ${pair_id}_bowtie2_mapping_report_tmp.txt | \ + samtools view -Sb - > ${pair_id}.bam + +if grep -q "Error" ${pair_id}_bowtie2_mapping_report_tmp.txt; then + exit 1 +fi +tail -n 19 ${pair_id}_bowtie2_mapping_report_tmp.txt > \ + ${pair_id}_bowtie2_mapping_report.txt +""" +} + + +process mapping_fastq_singleend { + container = "${container_url}" + label "big_mem_multi_cpus" + tag "$file_id" + publishDir "results/mapping/bams/", mode: 'copy' + + input: + tuple val(file_id), path(reads) + path index.collect() + + output: + set file_id, "*.bam", emit: bam + file "*_report.txt", emit: report + + script: + index_id = index[0] + for (index_file in index) { + if (index_file =~ /.*\.1\.bt2/ && !(index_file =~ /.*\.rev\.1\.bt2/)) { + index_id = ( index_file =~ /(.*)\.1\.bt2/)[0][1] + } + } +""" +bowtie2 --very-sensitive \ + -p ${task.cpus} \ + -x ${index_id} \ + -U ${reads} 2> \ + ${file_id}_bowtie2_mapping_report_tmp.txt | \ + samtools view -Sb - > ${file_id}.bam + +if grep -q "Error" ${file_id}_bowtie2_mapping_report_tmp.txt; then + exit 1 +fi +tail -n 19 ${file_id}_bowtie2_mapping_report_tmp.txt > \ + ${file_id}_bowtie2_mapping_report.txt +""" +}