mirror of
https://github.com/MillironX/taxprofiler.git
synced 2024-11-22 16:29:55 +00:00
Implement hostremoval
This commit is contained in:
parent
a821f748ee
commit
5e6be52fab
3 changed files with 72 additions and 10 deletions
|
@ -84,9 +84,15 @@ params {
|
||||||
perform_shortread_hostremoval = false
|
perform_shortread_hostremoval = false
|
||||||
shortread_hostremoval_reference = null
|
shortread_hostremoval_reference = null
|
||||||
shortread_hostremoval_index = null
|
shortread_hostremoval_index = null
|
||||||
|
longread_hostremoval_index = null
|
||||||
save_hostremoval_index = false
|
save_hostremoval_index = false
|
||||||
save_hostremoval_mapped = false
|
save_hostremoval_mapped = false
|
||||||
save_hostremoval_unmapped = false
|
save_hostremoval_unmapped = false
|
||||||
|
save_minimap2_hostremoval_index = false
|
||||||
|
save_minimap2_hostremoval_mapped = false
|
||||||
|
save_minimap2_hostremoval_unmapped = false
|
||||||
|
save_samtools_unmapped_bam = false
|
||||||
|
save_minimap2_unmapped_fq = false
|
||||||
|
|
||||||
// MALT
|
// MALT
|
||||||
run_malt = false
|
run_malt = false
|
||||||
|
|
47
subworkflows/local/longread_hostremoval.nf
Normal file
47
subworkflows/local/longread_hostremoval.nf
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
//
|
||||||
|
// Remove host reads via alignment and export off-target reads
|
||||||
|
//
|
||||||
|
|
||||||
|
include { MINIMAP2_INDEX } from '../../modules/nf-core/modules/minimap2/index/main'
|
||||||
|
include { MINIMAP2_ALIGN } from '../../modules/nf-core/modules/minimap2/align/main'
|
||||||
|
include { SAMTOOLS_VIEW } from '../../modules/nf-core/modules/samtools/view/main'
|
||||||
|
include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/modules/samtools/bam2fq/main'
|
||||||
|
|
||||||
|
workflow LONGREAD_HOSTREMOVAL {
|
||||||
|
take:
|
||||||
|
reads // [ [ meta ], [ reads ] ]
|
||||||
|
reference // /path/to/fasta
|
||||||
|
index // /path/to/index
|
||||||
|
|
||||||
|
main:
|
||||||
|
ch_versions = Channel.empty()
|
||||||
|
ch_multiqc_files = Channel.empty()
|
||||||
|
|
||||||
|
if ( !params.longread_hostremoval_index ) {
|
||||||
|
ch_minimap2_index = MINIMAP2_INDEX ( reference ).index
|
||||||
|
ch_versions = ch_versions.mix( MINIMAP2_INDEX.out.versions )
|
||||||
|
} else {
|
||||||
|
ch_minimap2_index = index
|
||||||
|
}
|
||||||
|
|
||||||
|
MINIMAP2_ALIGN ( reads, ch_minimap2_index, true, false, false )
|
||||||
|
ch_versions = ch_versions.mix( MINIMAP2_ALIGN.out.versions.first() )
|
||||||
|
ch_minimap2_mapped = MINIMAP2_ALIGN.out.bam
|
||||||
|
.map {
|
||||||
|
meta, reads ->
|
||||||
|
[ meta, reads, [] ]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SAMTOOLS_VIEW ( ch_minimap2_mapped , [] )
|
||||||
|
ch_versions = ch_versions.mix( SAMTOOLS_VIEW.out.versions.first() )
|
||||||
|
|
||||||
|
SAMTOOLS_BAM2FQ ( SAMTOOLS_VIEW.out.bam, false )
|
||||||
|
ch_versions = ch_versions.mix( SAMTOOLS_BAM2FQ.out.versions.first() )
|
||||||
|
|
||||||
|
|
||||||
|
emit:
|
||||||
|
reads = SAMTOOLS_BAM2FQ.out.reads // channel: [ val(meta), [ reads ] ]
|
||||||
|
versions = ch_versions // channel: [ versions.yml ]
|
||||||
|
}
|
||||||
|
|
|
@ -26,7 +26,8 @@ if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_refere
|
||||||
if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." }
|
if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." }
|
||||||
|
|
||||||
if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) }
|
if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) }
|
||||||
if (params.shortread_hostremoval_index ) { ch_reference_index = file(params.shortread_hostremoval_index ) } else { ch_reference_index = [] }
|
if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = file(params.shortread_hostremoval_index ) } else { ch_shortread_reference_index = [] }
|
||||||
|
if (params.longread_hostremoval_index ) { ch_longread_reference_index = file(params.longread_hostremoval_index ) } else { ch_longread_reference_index = [] }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -52,6 +53,7 @@ include { DB_CHECK } from '../subworkflows/local/db_check'
|
||||||
include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing'
|
include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing'
|
||||||
include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing'
|
include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing'
|
||||||
include { SHORTREAD_HOSTREMOVAL } from '../subworkflows/local/shortread_hostremoval'
|
include { SHORTREAD_HOSTREMOVAL } from '../subworkflows/local/shortread_hostremoval'
|
||||||
|
include { LONGREAD_HOSTREMOVAL } from '../subworkflows/local/longread_hostremoval'
|
||||||
include { SHORTREAD_COMPLEXITYFILTERING } from '../subworkflows/local/shortread_complexityfiltering'
|
include { SHORTREAD_COMPLEXITYFILTERING } from '../subworkflows/local/shortread_complexityfiltering'
|
||||||
include { PROFILING } from '../subworkflows/local/profiling'
|
include { PROFILING } from '../subworkflows/local/profiling'
|
||||||
|
|
||||||
|
@ -141,16 +143,23 @@ workflow TAXPROFILER {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( params.perform_shortread_hostremoval ) {
|
if ( params.perform_shortread_hostremoval ) {
|
||||||
ch_shortreads_hostremoved = SHORTREAD_HOSTREMOVAL ( ch_shortreads_filtered, ch_reference, ch_reference_index ).reads
|
ch_shortreads_hostremoved = SHORTREAD_HOSTREMOVAL ( ch_shortreads_filtered, ch_reference, ch_shortread_reference_index ).reads
|
||||||
ch_versions = ch_versions.mix(SHORTREAD_HOSTREMOVAL.out.versions)
|
ch_versions = ch_versions.mix(SHORTREAD_HOSTREMOVAL.out.versions)
|
||||||
} else {
|
} else {
|
||||||
ch_shortreads_hostremoved = ch_shortreads_filtered
|
ch_shortreads_hostremoved = ch_shortreads_filtered
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( params.perform_longread_hostremoval ) {
|
||||||
|
ch_longreads_hostremoved = LONGREAD_HOSTREMOVAL ( ch_longreads_preprocessed, ch_reference, ch_longread_reference_index ).reads
|
||||||
|
ch_versions = ch_versions.mix(LONGREAD_HOSTREMOVAL.out.versions)
|
||||||
|
} else {
|
||||||
|
ch_longreads_hostremoved = ch_longreads_preprocessed
|
||||||
|
}
|
||||||
|
|
||||||
if ( params.perform_runmerging ) {
|
if ( params.perform_runmerging ) {
|
||||||
|
|
||||||
ch_reads_for_cat_branch = ch_shortreads_hostremoved
|
ch_reads_for_cat_branch = ch_shortreads_hostremoved
|
||||||
.mix( ch_longreads_preprocessed )
|
.mix( ch_longreads_hostremoved )
|
||||||
.map {
|
.map {
|
||||||
meta, reads ->
|
meta, reads ->
|
||||||
def meta_new = meta.clone()
|
def meta_new = meta.clone()
|
||||||
|
@ -182,7 +191,7 @@ workflow TAXPROFILER {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ch_reads_runmerged = ch_shortreads_hostremoved
|
ch_reads_runmerged = ch_shortreads_hostremoved
|
||||||
.mix( ch_longreads_preprocessed, INPUT_CHECK.out.fasta )
|
.mix( ch_longreads_hostremoved, INPUT_CHECK.out.fasta )
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue