diff --git a/conf/modules.config b/conf/modules.config index 8c1d9162..09fbff1f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -730,16 +730,16 @@ process { // BEDTOOLS_COVERAGE // withName: SAMTOOLS_VIEW_GENOME { - tag = { "${meta.reference}|${meta.sample_id}_${meta.library_id}" } + tag = { "${meta.reference}|${meta.sample_id}" } publishDir = [ enabled: false ] } withName: BEDTOOLS_COVERAGE_DEPTH { - tag = { "${meta.reference}|${meta.sample_id}_${meta.library_id}" } + tag = { "${meta.reference}|${meta.sample_id}" } ext.args = '-mean -nonamecheck' - ext.prefix = { "${meta.sample_id}_${meta.library_id}_${meta.reference}_depth" } + ext.prefix = { "${meta.sample_id}_${meta.reference}_depth" } publishDir = [ path: { "${params.outdir}/mapstats/bedtools" }, mode: params.publish_dir_mode @@ -747,9 +747,9 @@ process { } withName: BEDTOOLS_COVERAGE_BREADTH { - tag = { "${meta.reference}|${meta.sample_id}_${meta.library_id}" } + tag = { "${meta.reference}|${meta.sample_id}" } ext.args = '-nonamecheck' - ext.prefix = { "${meta.sample_id}_${meta.library_id}_${meta.reference}_breadth" } + ext.prefix = { "${meta.sample_id}_${meta.reference}_breadth" } publishDir = [ path: { "${params.outdir}/mapstats/bedtools" }, mode: params.publish_dir_mode @@ -1059,8 +1059,12 @@ process { ext.args = { "--profiler ${meta.profiler} --output ${meta.profiler}taxpasta_table.tsv" } } + // + // QUALIMAP + // + withName: 'QUALIMAP_BAMQC_WITHBED|QUALIMAP_BAMQC_NOBED' { - tag = { "${meta.reference}|${meta.sample_id}_${meta.library_id}" } + tag = { "${meta.reference}|${meta.sample_id}" } publishDir = [ path: { "${params.outdir}/mapstats/qualimap/${meta.reference}/${meta.sample_id}/}" }, mode: params.publish_dir_mode, @@ -1107,7 +1111,7 @@ process { // RUN SEXDETERRMINE // withName: SAMTOOLS_DEPTH_SEXDETERRMINE { - tag = { "${meta1.reference}|${meta1.sample_id}_${meta1.library_id}" } + tag = { "${meta1.reference}|${meta1.sample_id}" } ext.prefix = { "${meta2.id}_samtoolsdepth" } ext.args = '-aa -q30 -Q30 -H' publishDir = [ @@ -1116,7 +1120,7 @@ process { } withName: SEXDETERRMINE { - tag = { "${meta.reference}|${meta.sample_id}_${meta.library_id}" } + tag = { "${meta.reference}|${meta.sample_id}" } ext.prefix = { "${meta.reference}_sexdeterrmine" } publishDir = [ path: { "${params.outdir}/sex_determination/" }, @@ -1130,7 +1134,46 @@ process { // LIBRARY MERGE // - withName: SAMTOOLS_MERGE_LIBRARIES { + withName: ".*MERGE_LIBRARIES:SAMTOOLS_MERGE_LIBRARIES" { + tag = { "${meta.reference}|${meta.sample_id}" } + ext.prefix = { "${meta.sample_id}_${meta.reference}_unsorted" } + publishDir = [ + enabled: false + ] + } + + withName: ".*MERGE_LIBRARIES:SAMTOOLS_SORT_MERGED_LIBRARIES" { + tag = { "${meta.reference}|${meta.sample_id}" } + ext.prefix = { "${meta.sample_id}_${meta.reference}" } + publishDir = [ + path: { "${params.outdir}/final_bams/raw/" }, + mode: params.publish_dir_mode, + pattern: '*.bam' + ] + } + + withName: ".*MERGE_LIBRARIES:SAMTOOLS_INDEX_MERGED_LIBRARIES" { + tag = { "${meta.reference}|${meta.sample_id}" } + ext.args = { params.fasta_largeref ? "-c" : "" } + ext.prefix = { "${meta.sample_id}_${meta.reference}" } + publishDir = [ + path: { "${params.outdir}/final_bams/raw/" }, + mode: params.publish_dir_mode, + pattern: '*.{bai,csi}' + ] + } + + withName: ".*MERGE_LIBRARIES:SAMTOOLS_FLAGSTAT_MERGED_LIBRARIES" { + tag = { "${meta.reference}|${meta.sample_id}" } + ext.prefix = { "${meta.sample_id}_${meta.reference}" } + publishDir = [ + path: { "${params.outdir}/final_bams/raw/" }, + mode: params.publish_dir_mode, + pattern: '*.flagstat' + ] + } + + withName: ".*MERGE_LIBRARIES:SAMTOOLS_MERGE_LIBRARIES" { tag = { "${meta.reference}|${meta.sample_id}" } ext.prefix = { "${meta.sample_id}_${meta.reference}_unsorted" } publishDir = [ @@ -1138,32 +1181,32 @@ process { ] } - withName: SAMTOOLS_SORT_MERGED_LIBRARIES { + withName: ".*MERGE_LIBRARIES_GENOTYPING:SAMTOOLS_SORT_MERGED_LIBRARIES" { tag = { "${meta.reference}|${meta.sample_id}" } ext.prefix = { "${meta.sample_id}_${meta.reference}" } publishDir = [ - path: { "${params.outdir}/final_bams/" }, + path: { "${params.outdir}/final_bams/${params.genotyping_source}/" }, mode: params.publish_dir_mode, pattern: '*.bam' ] } - withName: SAMTOOLS_INDEX_MERGED_LIBRARIES { + withName: ".*MERGE_LIBRARIES_GENOTYPING:SAMTOOLS_INDEX_MERGED_LIBRARIES" { tag = { "${meta.reference}|${meta.sample_id}" } ext.args = { params.fasta_largeref ? "-c" : "" } ext.prefix = { "${meta.sample_id}_${meta.reference}" } publishDir = [ - path: { "${params.outdir}/final_bams/" }, + path: { "${params.outdir}/final_bams/${params.genotyping_source}/" }, mode: params.publish_dir_mode, pattern: '*.{bai,csi}' ] } - withName: SAMTOOLS_FLAGSTAT_MERGED_LIBRARIES { + withName: ".*MERGE_LIBRARIES_GENOTYPING:SAMTOOLS_FLAGSTAT_MERGED_LIBRARIES" { tag = { "${meta.reference}|${meta.sample_id}" } ext.prefix = { "${meta.sample_id}_${meta.reference}" } publishDir = [ - path: { "${params.outdir}/final_bams/" }, + path: { "${params.outdir}/final_bams/${params.genotyping_source}/" }, mode: params.publish_dir_mode, pattern: '*.flagstat' ] diff --git a/workflows/eager.nf b/workflows/eager.nf index 8f51ca38..0766744b 100644 --- a/workflows/eager.nf +++ b/workflows/eager.nf @@ -21,18 +21,19 @@ include { addNewMetaFromAttributes } from '../subworkflows/local/utils_nfcore_ea // // TODO rename to active: index_reference, filter_bam etc. -include { REFERENCE_INDEXING } from '../subworkflows/local/reference_indexing' -include { PREPROCESSING } from '../subworkflows/local/preprocessing' -include { MAP } from '../subworkflows/local/map' -include { FILTER_BAM } from '../subworkflows/local/bamfiltering.nf' -include { DEDUPLICATE } from '../subworkflows/local/deduplicate' -include { MANIPULATE_DAMAGE } from '../subworkflows/local/manipulate_damage' -include { METAGENOMICS } from '../subworkflows/local/metagenomics' -include { ESTIMATE_CONTAMINATION } from '../subworkflows/local/estimate_contamination' -include { CALCULATE_DAMAGE } from '../subworkflows/local/calculate_damage' -include { RUN_SEXDETERRMINE } from '../subworkflows/local/run_sex_determination' -include { MERGE_LIBRARIES } from '../subworkflows/local/merge_libraries' -include { GENOTYPE } from '../subworkflows/local/genotype' +include { REFERENCE_INDEXING } from '../subworkflows/local/reference_indexing' +include { PREPROCESSING } from '../subworkflows/local/preprocessing' +include { MAP } from '../subworkflows/local/map' +include { FILTER_BAM } from '../subworkflows/local/bamfiltering.nf' +include { DEDUPLICATE } from '../subworkflows/local/deduplicate' +include { MANIPULATE_DAMAGE } from '../subworkflows/local/manipulate_damage' +include { METAGENOMICS_COMPLEXITYFILTER } from '../subworkflows/local/metagenomics_complexityfilter' +include { ESTIMATE_CONTAMINATION } from '../subworkflows/local/estimate_contamination' +include { CALCULATE_DAMAGE } from '../subworkflows/local/calculate_damage' +include { RUN_SEXDETERRMINE } from '../subworkflows/local/run_sex_determination' +include { MERGE_LIBRARIES } from '../subworkflows/local/merge_libraries' +include { MERGE_LIBRARIES as MERGE_LIBRARIES_GENOTYPING } from '../subworkflows/local/merge_libraries' +include { GENOTYPE } from '../subworkflows/local/genotype' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -264,6 +265,15 @@ workflow EAGER { ch_dedupped_flagstat = Channel.empty() } + // + // SUBWORKFLOW: Merge libraries per sample + // + + MERGE_LIBRARIES ( ch_dedupped_bams ) + ch_versions = ch_versions.mix( MERGE_LIBRARIES.out.versions ) + ch_merged_dedup_bams = MERGE_LIBRARIES.out.bam_bai + ch_multiqc_files = ch_multiqc_files.mix( MERGE_LIBRARIES.out.mqc.collect{it[1]}.ifEmpty([]) ) + // // MODULE QUALIMAP // @@ -273,7 +283,7 @@ workflow EAGER { .map{ addNewMetaFromAttributes( it, "id" , "reference" , false ) } - ch_qualimap_input = ch_dedupped_bams + ch_qualimap_input = ch_merged_dedup_bams .map { meta, bam, bai -> [ meta, bam ] @@ -458,7 +468,7 @@ workflow EAGER { addNewMetaFromAttributes( it, "id" , "reference" , false ) } - ch_bedtools_prep = ch_dedupped_bams + ch_bedtools_prep = ch_merged_dedup_bams .map { addNewMetaFromAttributes( it, "reference" , "reference" , false ) } @@ -518,7 +528,7 @@ workflow EAGER { // if ( params.run_sexdeterrmine ) { - ch_sexdeterrmine_input = ch_dedupped_bams + ch_sexdeterrmine_input = ch_merged_dedup_bams RUN_SEXDETERRMINE(ch_sexdeterrmine_input, REFERENCE_INDEXING.out.sexdeterrmine_bed ) ch_versions = ch_versions.mix( RUN_SEXDETERRMINE.out.versions ) @@ -539,27 +549,23 @@ workflow EAGER { // // SUBWORKFLOW: aDNA Damage Manipulation + // if ( params.run_mapdamage_rescaling || params.run_pmd_filtering || params.run_trim_bam ) { MANIPULATE_DAMAGE( ch_dedupped_bams, ch_fasta_for_deduplication.fasta, REFERENCE_INDEXING.out.pmd_masking ) - ch_multiqc_files = ch_multiqc_files.mix( MANIPULATE_DAMAGE.out.flagstat.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( MANIPULATE_DAMAGE.out.versions ) - ch_bams_for_library_merge = params.genotyping_source == 'rescaled' ? MANIPULATE_DAMAGE.out.rescaled : params.genotyping_source == 'pmd' ? MANIPULATE_DAMAGE.out.filtered : params.genotyping_source == 'trimmed' ? MANIPULATE_DAMAGE.out.trimmed : ch_dedupped_bams + ch_multiqc_files = ch_multiqc_files.mix( MANIPULATE_DAMAGE.out.flagstat.collect{it[1]}.ifEmpty([]) ) + ch_versions = ch_versions.mix( MANIPULATE_DAMAGE.out.versions ) + ch_bams_for_library_merge = params.genotyping_source == 'rescaled' ? MANIPULATE_DAMAGE.out.rescaled : params.genotyping_source == 'pmd' ? MANIPULATE_DAMAGE.out.filtered : params.genotyping_source == 'trimmed' ? MANIPULATE_DAMAGE.out.trimmed : ch_merged_dedup_bams + + // SUBWORKFLOW: merge libraries for genotyping + MERGE_LIBRARIES_GENOTYPING ( ch_bams_for_library_merge ) + ch_versions = ch_versions.mix( MERGE_LIBRARIES_GENOTYPING.out.versions ) + ch_bams_for_genotyping = MERGE_LIBRARIES_GENOTYPING.out.bam_bai + ch_multiqc_files = ch_multiqc_files.mix( MERGE_LIBRARIES_GENOTYPING.out.mqc.collect{it[1]}.ifEmpty([]) ) } else { - ch_bams_for_library_merge = ch_dedupped_bams + ch_bams_for_genotyping = ch_merged_dedup_bams } - // - // SUBWORKFLOW: MERGE LIBRARIES - // - - // The bams being merged are always the ones specified by params.genotyping_source, - // unless the user skipped damage manipulation, in which case it is the DEDUPLICATION output. - MERGE_LIBRARIES ( ch_bams_for_library_merge ) - ch_versions = ch_versions.mix( MERGE_LIBRARIES.out.versions ) - ch_bams_for_genotyping = MERGE_LIBRARIES.out.bam_bai - ch_multiqc_files = ch_multiqc_files.mix( MERGE_LIBRARIES.out.mqc.collect{it[1]}.ifEmpty([]) ) // Not sure if this is needed, or if it needs to be moved to line 564? - // // SUBWORKFLOW: Genotyping //