diff --git a/assets/multiqc_config.yaml b/assets/multiqc_config.yaml index d311a8713542ab769206d7d66b466ab8757aba78..c83e60d5ead2f356c11ab8ca3964173926ce4331 100644 --- a/assets/multiqc_config.yaml +++ b/assets/multiqc_config.yaml @@ -4,10 +4,6 @@ title: "My Title" #subtitle: "A subtitle to go underneath in grey" intro_text: "This MultiQC report summarise Quality Control analysis results." -report_comment: > - This report has been generated by the <a href="https://forgemia.inra.fr/get-nextflow-ngl-bi/wf-illumina-nf" target="_blank">wf-illumina-nf</a> - analysis pipeline. For information about how to interpret these results, please see the - <a href="https://forgemia.inra.fr/get-nextflow-ngl-bi/wf-illumina-nf" target="_blank">documentation</a>. show_analysis_paths: False show_analysis_time: False @@ -53,6 +49,12 @@ report_section_order: summary: order: -1001 +remove_sections: + - fastp-seq-content-n + - fastp-seq-quality + - fastp-seq-content-gc + - flash-histogram + module_order: - fastqc: name: "ReadsStats" diff --git a/conf/base.config b/conf/base.config index 4bc6650c6d84d233edb5dfd88c1910e5a009282f..0be9913b3373459a9a96d6bec470e25f99a5abe1 100644 --- a/conf/base.config +++ b/conf/base.config @@ -255,13 +255,19 @@ process { // SHARED MODULES //========================================= process { + withName: STORE_FASTQ { + time = { checkMax( 3.h * task.attempt, 'time' ) } + } + withName: CREATE_ANALYSIS { ext.args = params.project_hash ? "--projectDir '${params.project}-${params.project_hash}'" : '' + errorStrategy = { task.exitStatus in [6] ? 'ignore' : 'retry' } } withName: CREATE_READSETS { ext.args = [ params.run_name ? "--poolName '${params.run_name}'" : '', + params.select_samples ? "--samples '${params.select_samples}'" : '', params.lane ? "--laneNumberToWorkOn '${params.lane}'" : '', ].join(' ') } diff --git a/conf/prod.config b/conf/prod.config index eb1bd1aed87b1333340d1df8fb7fdd16c7f15f14..0670687b2b3fc1583b23d944e5f79a114b6a43c4 100644 --- a/conf/prod.config +++ b/conf/prod.config @@ -3,7 +3,8 @@ //========================================= process { withLabel: ngl { - beforeScript = "source ${params.ngl_bi_client}/GeT/bash/loadConfFile.sh ${params.ngl_bi_client}/IG/SystemeInteractionNGL-Bi/conf/prod_illumina_qc.conf" + def techno_label = params.sequencer == 'AVITI' ? 'elembio' : 'illumina' + beforeScript = "source ${params.ngl_bi_client}/GeT/bash/loadConfFile.sh ${params.ngl_bi_client}/IG/SystemeInteractionNGL-Bi/conf/prod_${techno_label}_qc.conf" publishDir = [ path: "${params.outdir}/ngl", mode: 'copy', diff --git a/conf/report.config b/conf/report.config index 42aef5472c129399343fd14a1a0d1f90bc62be06..7cd66575234aebd54a6f94068595925899ad55bc 100644 --- a/conf/report.config +++ b/conf/report.config @@ -29,5 +29,5 @@ manifest { description = "Workflow for Illumina data quality control" mainScript = 'main.nf' nextflowVersion = '>=0.32.0' - version = '1.26.5' + version = '1.27.0' } \ No newline at end of file diff --git a/conf/test.config b/conf/test.config index c2de5cd82a96a9727cf3be70bf9cb5b8332f4b2f..a7950436c8dcab92ac2d2bcfe619e070c5d49891 100644 --- a/conf/test.config +++ b/conf/test.config @@ -10,7 +10,8 @@ params { process { withLabel: ngl { - beforeScript = "source ${params.ngl_bi_client}/GeT/bash/loadConfFile.sh ${params.ngl_bi_client}/IG/SystemeInteractionNGL-Bi/conf/dev_illumina_qc.conf" + def techno_label = params.sequencer == 'AVITI' ? 'elembio' : 'illumina' + beforeScript = "source ${params.ngl_bi_client}/GeT/bash/loadConfFile.sh ${params.ngl_bi_client}/IG/SystemeInteractionNGL-Bi/conf/dev_${techno_label}_qc.conf" publishDir = [ path: "${params.outdir}/ngl", mode: 'copy', @@ -18,9 +19,4 @@ process { ] } - withName: CREATE_READSETS { - ext.args = [ - params.lane ? "--laneNumberToWorkOn '${params.lane}'" : '', - ].join(' ') - } } diff --git a/lib/pipeline.groovy b/lib/pipeline.groovy index 4cc505efafaf00e69d28035acbd3791a6edfe6e9..369033522d6ab316d5224de2494804567adec7d5 100644 --- a/lib/pipeline.groovy +++ b/lib/pipeline.groovy @@ -140,7 +140,6 @@ def getPipelineInfo() { def sn = params.machine_id ?: '' def platform = "$seq $sn" map['Sequencing Platform'] = platform ?: '' - map['Contact E-mail'] = 'get-plage.contact@genotoul.fr' return map } diff --git a/modules/local/module_NGL-Bi.nf b/modules/local/module_NGL-Bi.nf index 59f23608f415f2e76f22e8c1d6425771b2505ef8..1e0aac7cdd9a51366a56bda02d8a31a840032bfc 100644 --- a/modules/local/module_NGL-Bi.nf +++ b/modules/local/module_NGL-Bi.nf @@ -82,6 +82,7 @@ process NGSRG_ILLUMINA { output: path("*.log"), emit: log + val 1, emit: ready script: def args = task.ext.args ?: '' @@ -107,6 +108,7 @@ process NGSRG_ELEMBIO { output: path("*.log"), emit: log + val 1, emit: ready script: def args = task.ext.args ?: '' diff --git a/sub-workflows/local/ngl.nf b/sub-workflows/local/ngl.nf index 34a1f013e912f897651ece6f9408e22734b6a555..f05c7209da041aabcc9e9a0c6409169595171e19 100644 --- a/sub-workflows/local/ngl.nf +++ b/sub-workflows/local/ngl.nf @@ -12,17 +12,12 @@ // ------------------------------------------------- include { BEGIN_NGLBI as BEGIN } from "${params.shared_modules}/workflows/begin_nglbi.nf" include { COPY_TO_SAVE } from "${params.shared_modules}/workflows/copy_to_save.nf" -include { MD5SUM as MD5SUM_FASTQ; - md5sum as MD5SUM_INDEX } from "${params.shared_modules}/md5sum.nf" -include { READSET_FILE_FROM_FILE as ADD_RS_INDEX_FILES } from "${params.shared_modules}/ngl_bi.nf" addParams(ext: 'INDEX') -include { READSET_FILE_FROM_FILE as ADD_RS_RAW_FILES } from "${params.shared_modules}/ngl_bi.nf" addParams(ext: 'RAW') -include { UPDATE_NGLBI_STATE_FROM_FILE as UPDATE_STATE_FQC; - CREATE_ANALYSIS } from "${params.shared_modules}/ngl_bi.nf" +include { UPDATE_NGLBI_STATE_FROM_FILE as UPDATE_STATE_FQC} from "${params.shared_modules}/ngl_bi.nf" -include { FILE_RENAME as RENAME_FASTQ; - FILE_RENAME as RENAME_INDEX; - NGSRG_ILLUMINA; - NGSRG_ELEMBIO; } from "$baseDir/modules/local/module_NGL-Bi.nf" +include { FILE_RENAME as RENAME_FASTQ } from "$baseDir/modules/local/module_NGL-Bi.nf" +include { FILE_RENAME as RENAME_INDEX } from "$baseDir/modules/local/module_NGL-Bi.nf" +include { NGSRG_ILLUMINA } from "$baseDir/modules/local/module_NGL-Bi.nf" +include { NGSRG_ELEMBIO; } from "$baseDir/modules/local/module_NGL-Bi.nf" // ------------------------------------------------- // WORKFLOW // ------------------------------------------------- @@ -41,17 +36,23 @@ workflow NGL { demux_stat_json main: + fastq_files = Channel.empty() + md5_files = Channel.empty() + // First steps - BEGIN(bi_run_code, sq_xp_code, '', sequencer_name) + BEGIN(bi_run_code, sq_xp_code,'', sequencer_name) nglBiRunCode = BEGIN.out.nglBiRunCode readsets_created = BEGIN.out.readsets_created ready = BEGIN.out.ready + ready_for_analysis = Channel.empty() if(sequencer_name =~ "NovaSeq|MiSeq") { NGSRG_ILLUMINA(readsets_created, demux_stat_json, 'readsets') + ready_for_analysis = NGSRG_ILLUMINA.out.ready } else if (sequencer_name =~ "AVITI") { NGSRG_ELEMBIO(readsets_created, params.inputdir, params.lane, 'readsets') + ready_for_analysis = NGSRG_ELEMBIO.out.ready } bi_run_code = nglBiRunCode.collect().map { it.toString() } @@ -59,19 +60,19 @@ workflow NGL { // Compute results if (is_single_cell) { RENAME_INDEX(index_files.map{it[1]}.collect(), readsets_created, sq_xp_code, 'fastq_index') - MD5SUM_INDEX(RENAME_INDEX.out.fastq.collect(), run_name+'_fastq_index') - ADD_RS_INDEX_FILES(readsets_created, MD5SUM_INDEX.out, 'INDEX', ready) + fastq_files = fastq_files.mix(RENAME_INDEX.out.fastq) } RENAME_FASTQ(fastq.map{it[1]}.collect(), readsets_created, sq_xp_code, 'fastq_read') - fq = RENAME_FASTQ.out.fastq + fastq_files = fastq_files.mix(RENAME_FASTQ.out.fastq.ifEmpty([])) + + fq = fastq_files .flatMap() - .map { it -> [[type: 'fastq', barcode:run_name], it]} - - MD5SUM_FASTQ(fq.groupTuple()) + .map { it -> [[type: 'fastq', barcode:'all'], it]} + .groupTuple() UPDATE_STATE_FQC(readsets_created, 'F-QC', multiqc_html) - techno = sequencer_name =~ "MiSeq|NovaSeq" ? 'illumina' : sequencer_name =~ "AVITI" ? 'elembio' : 'other' + COPY_TO_SAVE( nglBiRunCode, readsets_created, @@ -79,8 +80,8 @@ workflow NGL { project, project_hash, fq, - MD5SUM_FASTQ.out.md5sum, - params.run_name + params.run_name, + ready_for_analysis ) emit: diff --git a/workflow/short_reads_qc.nf b/workflow/short_reads_qc.nf index 5dd432a5000a7b803d528d1e2df126a1dfd4a697..f02ca31d76944ecd5ce0feef4f4fba69badeb906 100644 --- a/workflow/short_reads_qc.nf +++ b/workflow/short_reads_qc.nf @@ -119,9 +119,11 @@ workflow SHORT_READS_QC { if (params.skip_core_element) { log.info "Elembio's sequencer but skipping CORE_ELEMENT" demux_stats = Channel.empty() + fastq = ch_read } else { CORE_ELEMENT(ch_runManifestJSON, ch_indexAssigned, ch_indexUnassigned) demux_stats = CORE_ELEMENT.out.demuxStat + fastq = ch_read } }