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

Laurent Modolo's avatar
Laurent Modolo committed
version = "3.0.0a6"
container_url = "lbmc/macs3:${version}"

params.macs_gsize=3e9
params.macs_mfold="5 50"
params.peak_calling = "--mfold ${params.macs_mfold} --gsize ${params.macs_gsize}"
params.peak_calling_out = ""
Laurent Modolo's avatar
Laurent Modolo committed
process peak_calling {
  container = "${container_url}"
  label "big_mem_mono_cpus"
Laurent Modolo's avatar
Laurent Modolo committed
  tag "${file_id}"
  if (params.peak_calling_out != "") {
    publishDir "results/${params.peak_calling_out}", mode: 'copy'
  }
Laurent Modolo's avatar
Laurent Modolo committed

  input:
    tuple val(file_id), path(bam_ip), path(bam_control)

  output:
    path "*", emit: peak
    path "*_report.txt", emit: report

  script:
/* remove --nomodel option for real dataset */
"""
Laurent Modolo's avatar
Laurent Modolo committed
macs3 callpeak \
Laurent Modolo's avatar
Laurent Modolo committed
  --treatment ${bam_ip} \
  --call-summits \
Laurent Modolo's avatar
Laurent Modolo committed
  --control ${bam_control} \
  --keep-dup all \
Laurent Modolo's avatar
Laurent Modolo committed
  --name ${bam_ip.simpleName} \
  --gsize ${params.macs_gsize} 2> \
Laurent Modolo's avatar
Laurent Modolo committed
  ${bam_ip.simpleName}_macs3_report.txt

if grep -q "ERROR" ${bam_ip.simpleName}_macs3_report.txt; then
  echo "MACS3 error"
  exit 1
fi
"""
}

params.peak_calling_bg = "--mfold ${params.macs_mfold} --gsize ${params.macs_gsize}"
params.peak_calling_bg_out = ""
Laurent Modolo's avatar
Laurent Modolo committed
process peak_calling_bg {
  container = "${container_url}"
  label "big_mem_mono_cpus"
Laurent Modolo's avatar
Laurent Modolo committed
  tag "${file_id}"
  if (params.peak_calling_bg_out != "") {
    publishDir "results/${params.peak_calling_bg_out}", mode: 'copy'
  }
Laurent Modolo's avatar
Laurent Modolo committed

  input:
    tuple val(file_id), path(bg_ip), path(bg_control)

  output:
    path "*", emit: peak
    path "*_report.txt", emit: report

  script:
/* remove --nomodel option for real dataset */
"""
Laurent Modolo's avatar
Laurent Modolo committed
awk '{print \$1"\t"\$2"\t"\$3"\t.\t+\t"\$4}' ${bg_ip} > \
  ${bg_ip.simpleName}.bed
awk '{print \$1"\t"\$2"\t"\$3"\t.\t+\t"\$4}' ${bg_control} > \
  ${bg_control.simpleName}.bed
Laurent Modolo's avatar
Laurent Modolo committed
macs3 callpeak \
Laurent Modolo's avatar
Laurent Modolo committed
  --treatment ${bg_ip.simpleName}.bed \
  --call-summits \
Laurent Modolo's avatar
Laurent Modolo committed
  --control ${bg_control.simpleName}.bed \
  --keep-dup all \
Laurent Modolo's avatar
Laurent Modolo committed
  --mfold params.macs_mfold[0] params.macs_mfold[1]
Laurent Modolo's avatar
Laurent Modolo committed
  --name ${bg_ip.simpleName} \
  --gsize ${params.macs_gsize} 2> \
Laurent Modolo's avatar
Laurent Modolo committed
  ${bg_ip.simpleName}_macs3_report.txt
Laurent Modolo's avatar
Laurent Modolo committed

Laurent Modolo's avatar
Laurent Modolo committed
if grep -q "ERROR" ${bg_ip.simpleName}_macs3_report.txt; then
Laurent Modolo's avatar
Laurent Modolo committed
  echo "MACS3 error"
  exit 1
fi
"""
}