From c98150b9e1a8ead0f4d4d7685b5350c61e18caa9 Mon Sep 17 00:00:00 2001
From: Laurent Modolo <laurent.modolo@ens-lyon.fr>
Date: Tue, 13 Apr 2021 11:05:18 +0200
Subject: [PATCH] fastp: add accel_1splus protocol trimming with a switch

---
 src/nf_modules/fastp/main.nf | 87 +++++++++++++++++++++++++++++++++++-
 1 file changed, 86 insertions(+), 1 deletion(-)

diff --git a/src/nf_modules/fastp/main.nf b/src/nf_modules/fastp/main.nf
index 267b7d86..fa61ab6b 100644
--- a/src/nf_modules/fastp/main.nf
+++ b/src/nf_modules/fastp/main.nf
@@ -1,11 +1,34 @@
 version = "0.20.1"
 container_url = "lbmc/fastp:${version}"
 
+params.fastp_protocol = ""
 params.fastp = ""
 params.fastp_pairedend = ""
 params.fastp_singleend = ""
 
-process fastp {
+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"
@@ -50,6 +73,68 @@ ${params.fastp} \
 """
 }
 
+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_tail1=10 \
+--trim_tail2=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 \
+--trim_tail1=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}
+"""
+}
+
 process fastp_pairedend {
   container = "${container_url}"
   label "big_mem_multi_cpus"
-- 
GitLab