1
0
Fork 0
mirror of https://github.com/MillironX/taxprofiler.git synced 2024-11-14 17:53:09 +00:00

feat: integrate Bracken into the profiling pipeline

This commit is contained in:
Moritz E. Beber 2022-10-14 12:18:07 +02:00
parent 4f728648f5
commit ca38d002de
4 changed files with 52 additions and 9 deletions

View file

@ -277,7 +277,7 @@ process {
} }
withName: KRAKEN2_KRAKEN2 { withName: KRAKEN2_KRAKEN2 {
ext.args = { "${meta.db_params}" } ext.args = params.kraken2_save_minimizers ? { "${meta.db_params} --report-minimizer-data" } : { "${meta.db_params}" }
ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" }
publishDir = [ publishDir = [
path: { "${params.outdir}/kraken2/${meta.db_name}/" }, path: { "${params.outdir}/kraken2/${meta.db_name}/" },
@ -286,6 +286,15 @@ process {
] ]
} }
withName: BRACKEN_BRACKEN {
errorStrategy = 'ignore'
publishDir = [
path: { "${params.outdir}/bracken/${meta.db_name}/" },
mode: params.publish_dir_mode,
pattern: '*.tsv'
]
}
withName: KRAKENTOOLS_COMBINEKREPORTS { withName: KRAKENTOOLS_COMBINEKREPORTS {
ext.prefix = { "kraken2_${meta.id}_combined_reports" } ext.prefix = { "kraken2_${meta.id}_combined_reports" }
publishDir = [ publishDir = [

View file

@ -1,13 +1,11 @@
process KRAKEN_STANDARD_REPORT { process KRAKEN_STANDARD_REPORT {
tag "$meta.id" tag "$meta.id"
label 'process_low' label 'process_single'
conda (params.enable_conda ? 'conda-forge::sed=4.8' : null) conda (params.enable_conda ? 'conda-forge::sed=4.8' : null)
if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
container 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' :
} else { 'biocontainers/biocontainers:v1.2.0_cv2' }"
container 'biocontainers/biocontainers:v1.2.0_cv2'
}
input: input:
tuple val(meta), path(report) tuple val(meta), path(report)
@ -15,10 +13,14 @@ process KRAKEN_STANDARD_REPORT {
output: output:
tuple val(meta), path(result), emit: report tuple val(meta), path(result), emit: report
when:
task.ext.when == null || task.ext.when
script: script:
result = "${report.baseName}_standardized.kraken2.report.txt" def prefix = task.ext.prefix ?: "${meta.id}"
result = "${prefix}_standardized.kraken2.report.txt"
""" """
cut -f1-3,6-8 "${report}" > "${result}" cut -f1-3,6-8 '${report}' > '${result}'
""" """
} }

View file

@ -114,6 +114,10 @@ params {
run_kraken2 = false run_kraken2 = false
kraken2_save_reads = false // added directly to module in profiling.nf kraken2_save_reads = false // added directly to module in profiling.nf
kraken2_save_readclassification = false // added directly to module in profiling.nf kraken2_save_readclassification = false // added directly to module in profiling.nf
kraken2_save_minimizers = false
// Bracken
run_bracken = true
// centrifuge // centrifuge
run_centrifuge = false run_centrifuge = false

View file

@ -5,6 +5,7 @@
include { MALT_RUN } from '../../modules/nf-core/malt/run/main' include { MALT_RUN } from '../../modules/nf-core/malt/run/main'
include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main' include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main'
include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main' include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main'
include { BRACKEN_BRACKEN } from '../../modules/nf-core/bracken/bracken/main'
include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main'
include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main' include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main'
include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/metaphlan3/metaphlan3/main' include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/metaphlan3/metaphlan3/main'
@ -133,6 +134,33 @@ workflow PROFILING {
} }
if ( params.run_kraken2 && params.run_bracken ) {
def ch_input_for_bracken
if (params.kraken2_save_minimizers) {
ch_input_for_bracken = KRAKEN_STANDARD_REPORT(KRAKEN2_KRAKEN2.out.report).report
} else {
ch_input_for_bracken = KRAKEN2_KRAKEN2.out.report
}
ch_input_for_bracken = ch_input_for_bracken
.combine(
databases.filter { meta, db ->
meta['tool'] == 'bracken'
}
)
.multiMap { meta, report, db_meta, db ->
report: [meta + db_meta, report]
db: db
}
BRACKEN_BRACKEN(ch_input_for_bracken.report, ch_input_for_bracken.db)
ch_versions = ch_versions.mix(BRACKEN_BRACKEN.out.versions.first())
ch_raw_profiles = ch_raw_profiles.mix(BRACKEN_BRACKEN.out.reports)
}
if ( params.run_centrifuge ) { if ( params.run_centrifuge ) {
ch_input_for_centrifuge = ch_input_for_profiling.centrifuge ch_input_for_centrifuge = ch_input_for_profiling.centrifuge