Skip to content
Snippets Groups Projects
Select Git revision
  • 4734f32a1c418c7c2b91813f0cea3065d30111ec
  • master default protected
  • dev
  • v2.0.0
  • v0.4.0
  • v0.3.0
  • v0.2.9
  • v0.2.8
  • v0.2.7
  • v0.2.6
  • v0.1.0
  • v0.2.5
  • v0.2.4
  • v0.2.3
  • v0.2.2
  • v0.2.1
  • v0.2.0
  • v0.1.2
18 results

docker_init.sh

Blame
  • Forked from LBMC / nextflow
    Source project has a limited visibility.
    main.nf 6.51 KiB
    version = "1.11"
    container_url = "lbmc/samtools:${version}"
    
    params.index_fasta = ""
    params.index_fasta_out = ""
    process index_fasta {
      container = "${container_url}"
      label "big_mem_mono_cpus"
      tag "$file_id"
      if (params.index_fasta_out != "") {
        publishDir "results/${params.index_fasta_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(fasta)
      output:
        tuple val(file_id), path("*.fai"), emit: index
    
      script:
    """
    samtools faidx ${params.index_fasta} ${fasta}
    """
    }
    
    params.filter_bam_quality_threshold = 30
    params.filter_bam_quality = "-q ${params.filter_bam_quality_threshold}"
    params.filter_bam_quality_out = ""
    process filter_bam_quality {
      container = "${container_url}"
      label "big_mem_multi_cpus"
      tag "$file_id"
      if (params.filter_bam_quality_out != "") {
        publishDir "results/${params.filter_bam_quality_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(bam)
    
      output:
        tuple val(file_id), path("*_filtered.bam"), emit: bam
      script:
    """
    samtools view -@ ${task.cpus} -hb ${bam} ${params.filter_bam_quality} > \
      ${bam.simpleName}_filtered.bam
    """
    }
    
    params.filter_bam = ""
    params.filter_bam_out = ""
    process filter_bam {
      container = "${container_url}"
      label "big_mem_multi_cpus"
      tag "$file_id"
      if (params.filter_bam_out != "") {
        publishDir "results/${params.filter_bam_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(bam)
        tuple val(bed_id), path(bed)
    
      output:
        tuple val(file_id), path("*_filtered.bam"), emit: bam
      script:
    """
    samtools view -@ ${task.cpus} -hb ${bam} -L ${bed} ${params.filter_bam} > \
      ${bam.simpleName}_filtered.bam
    """
    }
    
    params.filter_bam_mapped = "-F 4"
    params.filter_bam_mapped_out = ""
    process filter_bam_mapped {
      container = "${container_url}"
      label "big_mem_multi_cpus"
      tag "$file_id"
      if (params.filter_bam_mapped_out != "") {
        publishDir "results/${params.filter_bam_mapped_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(bam)
    
      output:
        tuple val(file_id), path("*_mapped.bam"), emit: bam
      script:
    """
    samtools view -@ ${task.cpus} ${params.filter_bam_mapped} -hb ${bam} > \
      ${bam.simpleName}_mapped.bam
    """
    }
    
    params.filter_bam_unmapped = "-f 4"
    params.filter_bam_unmapped_out = ""
    process filter_bam_unmapped {
      container = "${container_url}"
      label "big_mem_multi_cpus"
      tag "$file_id"
      if (params.filter_bam_unmapped_out != "") {
        publishDir "results/${params.filter_bam_unmapped_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(bam)
    
      output:
        tuple val(file_id), path("*_unmapped.bam"), emit: bam
      script:
    """
    samtools view -@ ${task.cpus} ${params.filter_bam_unmapped} -hb ${bam} > ${bam.simpleName}_unmapped.bam
    """
    }
    
    params.index_bam = ""
    params.index_bam_out = ""
    process index_bam {
      container = "${container_url}"
      label "big_mem_mono_cpus"
      tag "$file_id"
      if (params.index_bam_out != "") {
        publishDir "results/${params.index_bam_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(bam)
    
      output:
        tuple val(file_id), path("${bam}"), path("*.bam.bai"), emit: bam_idx
    
      script:
    """
    samtools index ${params.index_bam} ${bam}
    """
    }
    
    params.sort_bam = ""
    params.sort_bam_out = ""
    process sort_bam {
      container = "${container_url}"
      label "big_mem_multi_cpus"
      tag "$file_id"
      if (params.sort_bam_out != "") {
        publishDir "results/${params.sort_bam_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(bam)
    
      output:
        tuple val(file_id), path("*.bam*"), emit: bam
    
      script:
    """
    samtools sort -@ ${task.cpus} ${params.sort_bam} -O BAM -o ${bam.simpleName}_sorted.bam ${bam}
    """
    }
    
    params.split_bam = ""
    params.split_bam_out = ""
    process split_bam {
      container = "${container_url}"
      label "big_mem_multi_cpus"
      tag "$file_id"
      if (params.split_bam_out != "") {
        publishDir "results/${params.split_bam_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(bam)
    
      output:
        tuple val(file_id), path("*_forward.bam*"), emit: bam_forward
        tuple val(file_id), path("*_reverse.bam*"), emit: bam_reverse
      script:
    """
    samtools view -@ ${Math.round(task.cpus/2)} ${params.split_bam} \
      -hb -F 0x10 ${bam} > ${bam.simpleName}_forward.bam &
    samtools view -@ ${Math.round(task.cpus/2)} ${params.split_bam} \
      -hb -f 0x10 ${bam} > ${bam.simpleName}_reverse.bam
    """
    }
    
    params.merge_bam = ""
    params.merge_bam_out = ""
    process merge_bam {
      container = "${container_url}"
      label "big_mem_multi_cpus"
      tag "$file_id"
      if (params.merge_bam_out != "") {
        publishDir "results/${params.merge_bam_out}", mode: 'copy'
      }
    
      input:
        tuple val(first_file_id), path(first_bam)
        tuple val(second_file_id), path(second_bam)
    
      output:
        tuple val(file_id), path("*.bam*"), emit: bam
      script:
    """
    samtools merge -@ ${task.cpus} ${params.merge_bam} ${first_bam} ${second_bam} \
      ${first_bam.simpleName}_${second_file.simpleName}.bam
    """
    }
    
    params.merge_multi_bam = ""
    params.merge_multi_bam_out = ""
    process merge_multi_bam {
      container = "${container_url}"
      label "big_mem_multi_cpus"
      tag "$file_id"
      if (params.merge_multi_bam_out != "") {
        publishDir "results/${params.merge_multi_bam_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(bams)
    
      output:
        tuple val(file_id), path("*_merged.bam*"), emit: bam
      script:
    """
    samtools merge -@ ${task.cpus} \
      ${params.merge_multi_bam} \
      ${bams[0].simpleName}_merged.bam \
      ${bams}
    """
    }
    
    params.stats_bam = ""
    params.stats_bam_out = ""
    process stats_bam {
      container = "${container_url}"
      label "big_mem_multi_cpus"
      tag "$file_id"
      if (params.stats_bam_out != "") {
        publishDir "results/${params.stats_bam_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(bam)
    
      output:
        tuple val(file_id), path("*.tsv"), emit: tsv
      script:
    """
    samtools flagstat -@ ${task.cpus} ${params.stats_bam} -O tsv ${bam} > ${bam.simpleName}_stats.tsv
    """
    }
    
    params.flagstat_2_multiqc = ""
    params.flagstat_2_multiqc_out = ""
    process flagstat_2_multiqc {
      tag "$file_id"
      if (params.flagstat_2_multiqc_out != "") {
        publishDir "results/${params.flagstat_2_multiqc_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(tsv)
    
      output:
        tuple val(file_id), path("*.txt"), emit: report
    """
    mv ${tsv} ${tsv.simpleName}.flagstat.txt
    """
    }
    
    params.idxstat_2_multiqc = ""
    params.idxstat_2_multiqc_out = ""
    process idxstat_2_multiqc {
      tag "$file_id"
      if (params.idxstat_2_multiqc_out != "") {
        publishDir "results/${params.idxstat_2_multiqc_out}", mode: 'copy'
      }
    
      input:
        tuple val(file_id), path(tsv)
    
      output:
        tuple val(file_id), path("*.txt"), emit: report
    """
    mv ${tsv} ${tsv.simpleName}.idxstats.txt
    """
    }