diff --git a/bin/DTM/data_prepare.pl b/bin/DTM/data_prepare.pl index 2b0776a03f59432d5d8d1643264c8c27229b3537..05d9b773e2e30bfbe1711681c28181c3ccfb565b 100644 --- a/bin/DTM/data_prepare.pl +++ b/bin/DTM/data_prepare.pl @@ -184,6 +184,7 @@ MAIN: print ("\tFichier run NGL-Bi trouvé : $file_run_bi\n"); open (RUNBI, $file_run_bi); my $ngl_bi_run_name = <RUNBI>; + chomp($ngl_bi_run_name); close (RUNBI); my $sq_xp_code = `grep 'Experiment Name' SampleSheet.csv | cut -d',' -f2`; $? and print STDERR("[Erreur]Récup du code experience NGL-SQ\n"); diff --git a/conf/base.config b/conf/base.config index 0a6832f1daae4422ad7783c7ad2e5bc07d4af019..d330b07ab172b2b3015b9113d2ba5f7f26c29b5b 100644 --- a/conf/base.config +++ b/conf/base.config @@ -114,7 +114,7 @@ process { // ----- WithName // ----- CORE ----- // - withName: illuminaFilter { + withName: ILLUMINA_FILTER { publishDir = [ path: "${params.outdir}/IlluminaFilter", mode: 'symlink', diff --git a/modules/local/module_core.nf b/modules/local/module_core.nf index 7d9c7c52f6f38c6b05f52c58d333cf7ad4cc7726..9b7f25c368e1b6f6d11f9be7494065d42731307a 100644 --- a/modules/local/module_core.nf +++ b/modules/local/module_core.nf @@ -2,7 +2,7 @@ * Module pour les analyses de base du pipeline */ -process extractInfoForDemuxStats { +process PREP_DEMUXSTAT { publishDir path: "${params.outdir}/Demux" , mode: 'copy' input: @@ -18,7 +18,7 @@ process extractInfoForDemuxStats { """ } -process demultiplexStats { +process DEMUX_STATS { publishDir path: "${params.outdir}/Demux" , mode: 'copy' //module 'system/R-4.0.4_gcc-9.3.0' // Ne fonctionne pas ! @@ -58,7 +58,7 @@ process FASTQC { } -process illuminaFilter { +process ILLUMINA_FILTER { tag " $name" input: diff --git a/nextflow.config b/nextflow.config index 529dca9e170c4111b49e5fb19793412012357e57..157085f18b2fb84c07659ac2d27fbaebbe8e6577 100644 --- a/nextflow.config +++ b/nextflow.config @@ -33,6 +33,9 @@ params { cluster_options = '' + // skip parameters + skip_core_illumina = false + monochrome_logs = true help = false diff --git a/sub-workflows/local/begin_nglbi.nf b/sub-workflows/local/begin_nglbi.nf index 0473f635a5d8364db55e484e91a9c009b43d3aa4..0096dc4d87e515ad3cc6117f6cce8dac39b1139d 100644 --- a/sub-workflows/local/begin_nglbi.nf +++ b/sub-workflows/local/begin_nglbi.nf @@ -16,6 +16,7 @@ include { CREATE_RUN; UPDATE_NGLBI_STATE_FROM_CODE as UPDATE_STATE_FS; UPDATE_NGLBI_STATE_FROM_CODE as UPDATE_STATE_IPRG; UPDATE_NGLBI_STATE_FROM_FILE as UPDATE_STATE_FRG; + UPDATE_NGLBI_STATE_FROM_FILE as UPDATE_STATE_IPQC; CREATE_READSETS; } from "${params.shared_modules}/ngl_bi.nf" @@ -32,7 +33,7 @@ include { CREATE_RUN; workflow NGLBI { main: // Creation of the Run if needed - if (params.insert_to_ngl && params.bi_run_code == '') { + if (params.bi_run_code == '') { CREATE_RUN(params.sequencer, params.sqXpCode, '', 1) @@ -57,9 +58,10 @@ workflow NGLBI { // Update readset states UPDATE_STATE_FRG(CREATE_READSETS.out.createdFile, 'F-RG', CREATE_READSETS.out.ready) + UPDATE_STATE_IPQC(CREATE_READSETS.out.createdFile, 'IP-QC', UPDATE_STATE_FRG.out.ready) emit: - ready = UPDATE_STATE_FRG.out.ready + ready = UPDATE_STATE_IPQC.out.ready readsetsFile = CREATE_READSETS.out.createdFile } diff --git a/sub-workflows/local/core_illumina.nf b/sub-workflows/local/core_illumina.nf new file mode 100644 index 0000000000000000000000000000000000000000..6a79fdff11ca9db5709b0aceb77675f0a74d68e6 --- /dev/null +++ b/sub-workflows/local/core_illumina.nf @@ -0,0 +1,51 @@ +// ------------------------------------------------- +// CORE ILLUMINA +// ------------------------------------------------- +/* + * Statistiques de démultiplexage + * IlluminaFilter +*/ + +// ------------------------------------------------- +// MODULES +// ------------------------------------------------- +include { + PREP_DEMUXSTAT; + DEMUX_STATS; + ILLUMINA_FILTER; +} from "$baseDir/modules/local/module_core.nf" + +// ------------------------------------------------- +// LOCAL PARAMS +// ------------------------------------------------- + + +// ------------------------------------------------- +// WORKFLOW +// ------------------------------------------------- + +workflow CORE_ILLUMINA { + take: + sampleSheet + demuxStatXML + demuxSummary + fastq + + main: + // ----------- DemultiplexStat + PREP_DEMUXSTAT(sampleSheet) + DEMUX_STATS(demuxStatXML, PREP_DEMUXSTAT.out, demuxSummary) + + // ----------- Illumina Filter // ou SubsetSeqFiles : dans quel cas on fait l'un ou l'autre ???? + if ("$params.sequencer" =~ /NovaSeq.*/ && params.is_multiplex) { + System.out.println "Les données ne nécessite pas de passer par IlluminaFilter" + fastq_good = fastq + } else { // Si MiSeq ou Nova + noIndex + ILLUMINA_FILTER(fastq) + fastq_good = ILLUMINA_FILTER.out.reads + } + + emit: + fastq = fastq_good +} + diff --git a/sub-workflows/local/core_pipeline.nf b/sub-workflows/local/core_pipeline.nf index 25787334c1fc27fae2db6bb1ee42d6120bc886e7..96b89a8ed5bd27aa6098cd79993a9e927262d613 100644 --- a/sub-workflows/local/core_pipeline.nf +++ b/sub-workflows/local/core_pipeline.nf @@ -3,8 +3,6 @@ // CORE PIPELINE // ------------------------------------------------- /* - * Creation readsets NGL-Bi -> plus tard - * Statistiques de démultiplexage * QC des reads * Recherche contaminations * Recherche duplicats @@ -14,15 +12,12 @@ // MODULES // ------------------------------------------------- include { - extractInfoForDemuxStats; - demultiplexStats; FASTQC; - illuminaFilter; FASTQSCREEN; DUPLICATED_READS; } from "$baseDir/modules/local/module_core.nf" -include { GUNZIP } from "${params.shared_modules}/gzip.nf" -include { SEQTK_SAMPLE } from "${params.shared_modules}/seqtk.nf" +include { GUNZIP } from "${params.shared_modules}/gzip.nf" +include { SEQTK_SAMPLE } from "${params.shared_modules}/seqtk.nf" include { md5sum as MD5SUM } from "${params.shared_modules}/md5sum.nf" //------------------------------------------------- @@ -33,36 +28,20 @@ isResume=workflow.resume //------------------------------------------------- workflow CORE { take: - ch_sampleSheet - ch_DemuxStatXML - ch_DemuxSummary ch_read - main: - // ----------- DemultiplexStat - extractInfoForDemuxStats(ch_sampleSheet) - demultiplexStats(ch_DemuxStatXML, extractInfoForDemuxStats.out, ch_DemuxSummary) - - // ----------- Illumina Filter // ou SubsetSeqFiles : dans quel cas on fait l'un ou l'autre ???? - if ("$params.sequencer" =~ /NovaSeq.*/ && params.is_multiplex) { - System.out.println "Les données ne nécessite pas de passer par IlluminaFilter" - ch_read_good = ch_read - } else { // Si MiSeq ou Nova + noIndex - illuminaFilter(ch_read) - ch_read_good = illuminaFilter.out.reads - } - + main: // ----------- md5sum - MD5SUM(ch_read_good.collect{it[1]}.flatten().collect(), params.run_name+'_fastq') + MD5SUM(ch_read.collect{it[1]}.flatten().collect(), params.run_name+'_fastq') // ----------- FASTQC - FASTQC(ch_read_good) + FASTQC(ch_read) // ----------- ContaminationSearch - FASTQSCREEN(ch_read_good) + FASTQSCREEN(ch_read) // ----------- Recherche Duplicats - GUNZIP(ch_read_good) + GUNZIP(ch_read) GUNZIP.out.branch{ large : it[1].size() >= params.bytes_subset_seq diff --git a/workflow/illumina_qc.nf b/workflow/illumina_qc.nf index 1c3ba605d3d64d9d2d44dc3afca33d1d25c7fef9..8bdf8f68b1b3cd406308a846338560c2a9078682 100644 --- a/workflow/illumina_qc.nf +++ b/workflow/illumina_qc.nf @@ -58,14 +58,13 @@ createDir = file(params.outdir).mkdir() // INCLUDES // ------------------------------------------------- include { NGLBI } from "$baseDir/sub-workflows/local/begin_nglbi.nf" +include { CORE_ILLUMINA } from "$baseDir/sub-workflows/local/core_illumina.nf" include { CORE } from "$baseDir/sub-workflows/local/core_pipeline.nf" include { DNA_QC } from "$baseDir/sub-workflows/local/dna_qc.nf" include { RNA_QC } from "$baseDir/sub-workflows/local/rna_qc.nf" include { MULTIQC } from "${params.shared_modules}/multiqc.nf" include { workflow_summary as WORKFLOW_SUMMARY } from "${params.shared_modules}/workflow_summary.nf" -include { UPDATE_NGLBI_STATE_FROM_FILE as UPDATE_STATE_IPQC; - UPDATE_NGLBI_STATE_FROM_FILE as UPDATE_STATE_FQC - } from "${params.shared_modules}/ngl_bi.nf" +include { UPDATE_NGLBI_STATE_FROM_FILE as UPDATE_STATE_FQC } from "${params.shared_modules}/ngl_bi.nf" // ------------------------------------------------- // EMAIL ON START @@ -80,13 +79,19 @@ sendBeginMail(format.format(new Date())) workflow ILLUMINA_QC { ch_mqc = Channel.empty() WORKFLOW_SUMMARY() - NGLBI() if (params.insert_to_ngl){ - UPDATE_STATE_IPQC(NGLBI.out.readsetsFile, 'IP-QC', NGLBI.out.ready) + NGLBI() } - CORE(ch_ss, ch_DemuxStatXML, ch_DemuxSummary, ch_read) /*ch_ngl, ch_runInfo, mismatchNumber, params.raw_data*/ + if ( ! params.skip_core_illumina ) { + CORE_ILLUMINA(ch_ss, ch_DemuxStatXML, ch_DemuxSummary, ch_read) + fastq = CORE_ILLUMINA.out.fastq + } else { + fastq = ch_read + } + + CORE(fastq) if (params.data_nature == 'DNA') { DNA_QC(CORE.out.subset_fastq)