Skip to content
Snippets Groups Projects
main.nf 2.38 KiB
// SPDX-FileCopyrightText: 2022 Laurent Modolo <laurent.modolo@ens-lyon.fr>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

version = "2.18.11"
container_url = "lbmc/picard:${version}"

params.mark_duplicate = "VALIDATION_STRINGENCY=LENIENT REMOVE_DUPLICATES=true"
params.mark_duplicate_out = ""
process mark_duplicate {
  container = "${container_url}"
  label "big_mem_mono_cpus"
  tag "$file_id"
  if (params.mark_duplicate_out != "") {
    publishDir "results/${params.mark_duplicate_out}", mode: 'copy'
  }

  input:
    tuple val(file_id), path(bam)
  output:
    tuple val(file_id) , path("*.bam"), emit: bam
    path "*_report.dupinfo.txt", emit: report


  script:
"""
PicardCommandLine MarkDuplicates \
  ${params.mark_duplicate} \
  INPUT=${bam} \
  OUTPUT=${bam.baseName}_dedup.bam \
  METRICS_FILE=${bam.baseName}_picard_dedup_report.dupinfo.txt &> \
  picard_${bam.baseName}.log
"""
}

params.normalize_fasta = ""
params.normalize_fasta_out = ""
process normalize_fasta {
  container = "${container_url}"
  label "big_mem_mono_cpus"
  tag "$file_id"
  if (params.normalize_fasta_out != "") {
    publishDir "results/${params.normalize_fasta_out}", mode: 'copy'
  }

  input:
    tuple val(file_id), path(fasta)
  output:
    tuple val(file_id), path("results/*.fasta.gz"), emit: fasta 

  script:
"""
mkdir -p results
PicardCommandLine NormalizeFasta \
      I=${fasta} \
      O=results/${fasta.simpleName}.fasta
gzip results/${fasta.simpleName}.fasta
"""
}

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("*.dict"), emit: index

  script:
"""
PicardCommandLine CreateSequenceDictionary \
  ${params.index_fasta} \
  REFERENCE=${fasta} \
  OUTPUT=${fasta.baseName}.dict
"""
}

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("*"), emit: index

  script:
"""
PicardCommandLine BuildBamIndex \
  ${params.index_bam} \
  INPUT=${bam}
"""
}