Skip to content
Snippets Groups Projects
main.nf 2.37 KiB
Newer Older
version = "1.17"
container_url = "xgrand/samtools:${version}"
xgrand's avatar
xgrand committed

params.sort_bam_out =""
process sort_bam {
  container = "${container_url}"
  label "big_mem_multi_cpus"
  tag "sorting"
  if (params.sort_bam_out != "") {
    publishDir "results/${params.sort_bam_out}", mode: 'copy'
  }

  input:
    path(bam)

  output:
    path("*sorted.bam"), emit: sorted_bam
xgrand's avatar
xgrand committed

  script:
"""
samtools sort -@ ${task.cpus} ${bam} -O BAM -o ${bam.simpleName}_sorted.bam
"""
}

params.start_position_counts_out = ""
process start_position_counts {
    container = "${container_url}"
aliarifki's avatar
aliarifki committed
    tag "${barcode}"
xgrand's avatar
xgrand committed
    label "big_mem_multi_cpus"
    publishDir "results/${params.start_position_counts_out}", mode: 'copy'

    input:
aliarifki's avatar
aliarifki committed
        tuple val(barcode), path(bam), path(index)
xgrand's avatar
xgrand committed

    output:
aliarifki's avatar
aliarifki committed
        tuple val(barcode), path("${barcode}/${barcode}_start_positions_counts.txt"), emit: count
xgrand's avatar
xgrand committed

    script:
"""
aliarifki's avatar
aliarifki committed
mkdir ${barcode}
samtools view -F 260 ${bam} |
xgrand's avatar
xgrand committed
  cut -f 1,4 |
  sort > ${barcode}/${barcode}_start_positions_counts.txt
xgrand's avatar
xgrand committed
"""
}

params.index_bam_out = ""
process index_bam {
  container = "${container_url}"
  label "small_mem_mono_cpus"
  tag "indexing"
  if (params.index_bam_out != "") {
    publishDir "results/${params.index_bam_out}", mode: 'copy'
  }

  input:
    path(bam)

  output:
    path("*.bai")

  script:
"""
samtools index -@ ${task.cpus} ${bam}
"""
}

params.indexed_bam_out =""
process sort_index_bam {
  container = "${container_url}"
  label "big_mem_multi_cpus"
aliarifki's avatar
aliarifki committed
  tag "${barcode}"
  if (params.indexed_bam_out != "") {
    publishDir "results/${params.indexed_bam_out}", mode: 'copy'
  }

  input:
aliarifki's avatar
aliarifki committed
    tuple val(barcode), path(bam)
aliarifki's avatar
aliarifki committed
    tuple val(barcode), path("${barcode}/*sorted.bam"), path("${barcode}/*.bai"), emit: indexed_bam
aliarifki's avatar
aliarifki committed
mkdir ${barcode}
cd ${barcode}/
samtools sort -@ ${task.cpus} ../${bam} -o ${barcode}_sorted.bam
samtools index -@ ${task.cpus} ${barcode}_sorted.bam
}

params.filtered_bam_out = ""
process filter_as {
  container = "${container_url}"
  label "big_mem_multi_cpus"
  tag "${barcode}"
  if (params.filtered_bam_out != "") {
    publishDir "results/${params.filtered_bam_out}", mode: 'copy'
  }

  input:
    tuple val(barcode), path(bam)

  output:
    tuple val(barcode), path("${barcode}/*_AS500.bam"), emit: filtered_bam

  script:
"""
mkdir ${barcode}
cd ${barcode}/
samtools view -Shb -e '[AS]>=500' -@ ${task.cpus} ../${bam} -o ${barcode}_AS500.bam
"""
xgrand's avatar
xgrand committed
}