Skip to content
Snippets Groups Projects
main.nf 4.51 KiB
Newer Older
Laurent Modolo's avatar
Laurent Modolo committed
version = "0.20.1"
container_url = "lbmc/fastp:${version}"

params.fastp_protocol = ""
Laurent Modolo's avatar
Laurent Modolo committed
params.fastp = ""
params.fastp_pairedend = ""
params.fastp_singleend = ""

workflow fastp {
  take:
    fastq

  main:
  switch(params.fastp_protocol) {
    case "accel_1splus":
      fastp_accel_1splus(fastq)
      fastp_accel_1splus.out.fastq.set{res_fastq}
      fastp_accel_1splus.out.report.set{res_report}
    break;
    default:
      fastp_default(fastq)
      fastp_default.out.fastq.set{res_fastq}
      fastp_default.out.report.set{res_report}
    break;
  }
  emit:
    fastq = res_fastq
    report = res_report
}

process fastp_default {
  container = "${container_url}"
  label "big_mem_multi_cpus"
  tag "$pair_id"
  publishDir "results/QC/fastp/", mode: 'copy', pattern: "*.html"

  input:
  tuple val(pair_id), path(reads)

  output:
    tuple val(pair_id), path("*.fastq.gz"), emit: fastq
    tuple val(pair_id), path("*.html"), emit: html
    tuple val(pair_id), path("*.json"), emit: report

  script:
if (reads instanceof List)
"""
fastp --thread ${task.cpus} \
  --qualified_quality_phred 20 \
  --disable_length_filtering \
  --detect_adapter_for_pe \
  ${params.fastp} \
  --in1 ${reads[0]} \
  --in2 ${reads[1]} \
  --out1 ${pair_id}_R1_trim.fastq.gz \
  --out2 ${pair_id}_R2_trim.fastq.gz \
  --html ${pair_id}.html \
  --json ${pair_id}_fastp.json \
  --report_title ${pair_id}
"""
else
"""
fastp --thread ${task.cpus} \
  --qualified_quality_phred 20 \
  --disable_length_filtering \
  --detect_adapter_for_pe \
  ${params.fastp} \
  --in1 ${reads} \
  --out1 ${pair_id}_trim.fastq.gz \
  --html ${pair_id}.html \
  --json ${pair_id}_fastp.json \
  --report_title ${pair_id}
process fastp_accel_1splus {
  container = "${container_url}"
  label "big_mem_multi_cpus"
  tag "$pair_id"
  publishDir "results/QC/fastp/", mode: 'copy', pattern: "*.html"

  input:
  tuple val(pair_id), path(reads)

  output:
    tuple val(pair_id), path("*.fastq.gz"), emit: fastq
    tuple val(pair_id), path("*.html"), emit: html
    tuple val(pair_id), path("*.json"), emit: report

  script:
if (reads instanceof List)
"""
fastp --thread ${task.cpus} \
  --disable_quality_filtering \
  --disable_length_filtering \
  --disable_trim_poly_g \
  --stdout \
  --in1 ${reads[0]} \
  --in2 ${reads[1]} \
  --out1 ${pair_id}_R1_trim.fastq.gz \
  --out2 ${pair_id}_R2_trim.fastq.gz | \
  fastp --thread ${task.cpus} \
    --stdin \
    --trim_front1=10 \
    --trim_front2=10 \
    --qualified_quality_phred 20 \
    --disable_length_filtering \
    --detect_adapter_for_pe \
    ${params.fastp} \
    --html ${pair_id}.html \
    --json ${pair_id}_fastp.json \
    --report_title ${pair_id}
"""
else
"""
fastp --thread ${task.cpus} \
  --disable_quality_filtering \
  --disable_length_filtering \
  --disable_trim_poly_g \
  --stdout \
  --in1 ${reads[0]} \
  --out1 ${pair_id}_R1_trim.fastq.gz \
  fastp --thread ${task.cpus} \
    --stdin \
    --trim_front1=10 \
    --qualified_quality_phred 20 \
    --disable_length_filtering \
    --detect_adapter_for_pe \
    ${params.fastp} \
    --html ${pair_id}.html \
    --json ${pair_id}_fastp.json \
    --report_title ${pair_id}
Laurent Modolo's avatar
Laurent Modolo committed
process fastp_pairedend {
  container = "${container_url}"
  label "big_mem_multi_cpus"
  tag "$pair_id"
  publishDir "results/QC/fastp/", mode: 'copy', pattern: "*.html"
Laurent Modolo's avatar
Laurent Modolo committed

  input:
  tuple val(pair_id), path(reads)

  output:
    tuple val(pair_id), path("*.fastq.gz"), emit: fastq
    tuple val(pair_id), path("*.html"), emit: html
    tuple val(pair_id), path("*.json"), emit: report
Laurent Modolo's avatar
Laurent Modolo committed

  script:
"""
fastp --thread ${task.cpus} \
--qualified_quality_phred 20 \
--disable_length_filtering \
--detect_adapter_for_pe \
Laurent Modolo's avatar
Laurent Modolo committed
${params.fastp_pairedend} \
Laurent Modolo's avatar
Laurent Modolo committed
--in1 ${reads[0]} \
--in2 ${reads[1]} \
--out1 ${pair_id}_R1_trim.fastq.gz \
--out2 ${pair_id}_R2_trim.fastq.gz \
--html ${pair_id}.html \
--json ${pair_id}_fastp.json \
Laurent Modolo's avatar
Laurent Modolo committed
--report_title ${pair_id}
"""
}

process fastp_singleend {
  container = "${container_url}"
  label "big_mem_multi_cpus"
  tag "$pair_id"
  publishDir "results/QC/fastp/", mode: 'copy', pattern: "*.html"
Laurent Modolo's avatar
Laurent Modolo committed

  input:
  tuple val(pair_id), path(reads)

  output:
    tuple val(pair_id), path("*.fastq.gz"), emit: fastq
    tuple val(pair_id), path("*.html"), emit: html
    tuple val(pair_id), path("*.json"), emit: report
Laurent Modolo's avatar
Laurent Modolo committed

  script:
"""
fastp --thread ${task.cpus} \
--qualified_quality_phred 20 \
--disable_length_filtering \
--detect_adapter_for_pe \
Laurent Modolo's avatar
Laurent Modolo committed
${params.fastp_singleend} \
Laurent Modolo's avatar
Laurent Modolo committed
--in1 ${reads} \
--out1 ${pair_id}_trim.fastq.gz \
--html ${pair_id}.html \
--json ${pair_id}_fastp.json \
Laurent Modolo's avatar
Laurent Modolo committed
--report_title ${pair_id}
"""
}