#!/usr/bin/env nextflow // enable dsl2 nextflow.preview.dsl = 2 // import subworkflows include {articNcovNanopore} from './workflows/articNcovNanopore.nf' include {ncovIllumina} from './workflows/illuminaNcov.nf' if ( params.illumina ) { if (! params.directory ) { println("Please supply a directory containing fastqs with --directory") System.exit(1) } } else if ( params.medaka || params.nanopolish ) { if (! params.basecalled_fastq ) { println("Please supply a directory containing basecalled fastqs with --basecalled_fastq (this is the output directory from guppy_barcoder or guppy_basecaller)") } if (! params.fast5_pass ) { println("Please supply a directory containing fast5 files with --fast5_pass (this is the fast5_pass directory)") } if (! params.sequencing_summary ) { println("Please supply the path to the sequencing_summary.txt file from your run with --sequencing_summary") System.exit(1) } } else { println("Please select a workflow with --nanopolish, --illumina or --medaka") System.exit(1) } if ( ! params.prefix ) { println("Please supply a prefix for your output files with --prefix") System.exit(1) } // main workflow workflow { if ( params.illumina ) { Channel.fromFilePairs( params.fastqSearchPath, flat: true) .set{ ch_filePairs } } else { Channel.fromPath( "${params.basecalled_fastq}" ) .set{ ch_runDirectory } Channel.fromPath( "${params.fast5_pass}" ) .set{ ch_fast5Pass } Channel.fromPath( "${params.sequencing_summary}" ) .set{ ch_seqSummary } // Check to see if we have barcodes def nanoporeBarcodeDirs = new FileNameByRegexFinder().getFileNames(params.basecalled_fastq, /.*barcode\d\d$/) if( nanoporeBarcodeDirs ) { // Yes, barcodes! Channel.fromPath( "${params.basecalled_fastq}/barcode*", type: 'dir', maxDepth: 1 ) .filter{ it.listFiles().size() > 5 } .set{ ch_fastqDirs } } else { // No, no barcodes Channel.fromPath( "${params.basecalled_fastq}", type: 'dir', maxDepth: 1 ) .set{ ch_fastqDirs } } } main: if ( params.nanopolish || params.medaka ) { articNcovNanopore(ch_fastqDirs, ch_fast5Pass, ch_seqSummary) } else if ( params.illumina ) { ncovIllumina(ch_filePairs) } else { println("Please select a workflow with --nanopolish, --illumina or --medaka") } }