mirror of
https://github.com/MillironX/taxprofiler.git
synced 2024-11-22 11:19:54 +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
|
||||
shortread_hostremoval_reference = null
|
||||
shortread_hostremoval_index = null
|
||||
longread_hostremoval_index = null
|
||||
save_hostremoval_index = false
|
||||
save_hostremoval_mapped = 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
|
||||
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 ) { 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 { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing'
|
||||
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 { PROFILING } from '../subworkflows/local/profiling'
|
||||
|
||||
|
@ -141,16 +143,23 @@ workflow TAXPROFILER {
|
|||
*/
|
||||
|
||||
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)
|
||||
} else {
|
||||
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 ) {
|
||||
|
||||
ch_reads_for_cat_branch = ch_shortreads_hostremoved
|
||||
.mix( ch_longreads_preprocessed )
|
||||
.mix( ch_longreads_hostremoved )
|
||||
.map {
|
||||
meta, reads ->
|
||||
def meta_new = meta.clone()
|
||||
|
@ -182,7 +191,7 @@ workflow TAXPROFILER {
|
|||
|
||||
} else {
|
||||
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