mirror of
https://github.com/MillironX/taxprofiler.git
synced 2024-11-15 07:33:09 +00:00
101 lines
3.6 KiB
Groovy
Executable file
101 lines
3.6 KiB
Groovy
Executable file
//
|
|
// This file holds several functions specific to the main.nf workflow in the nf-core/taxprofiler pipeline
|
|
//
|
|
|
|
import nextflow.Nextflow
|
|
|
|
class WorkflowMain {
|
|
|
|
//
|
|
// Citation string for pipeline
|
|
//
|
|
public static String citation(workflow) {
|
|
return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" +
|
|
// TODO nf-core: Add Zenodo DOI for pipeline after first release
|
|
//"* The pipeline\n" +
|
|
//" https://doi.org/10.5281/zenodo.XXXXXXX\n\n" +
|
|
'* The nf-core framework\n' +
|
|
' https://doi.org/10.1038/s41587-020-0439-x\n\n' +
|
|
'* Software dependencies\n' +
|
|
" https://github.com/${workflow.manifest.name}/blob/master/CITATIONS.md"
|
|
}
|
|
|
|
//
|
|
// Generate help string
|
|
//
|
|
public static String help(workflow, params) {
|
|
def command = "nextflow run ${workflow.manifest.name} --input samplesheet.csv --genome GRCh37 -profile docker"
|
|
def help_string = ''
|
|
help_string += NfcoreTemplate.logo(workflow, params.monochrome_logs)
|
|
help_string += NfcoreSchema.paramsHelp(workflow, params, command)
|
|
help_string += '\n' + citation(workflow) + '\n'
|
|
help_string += NfcoreTemplate.dashedLine(params.monochrome_logs)
|
|
return help_string
|
|
}
|
|
|
|
//
|
|
// Generate parameter summary log string
|
|
//
|
|
public static String paramsSummaryLog(workflow, params) {
|
|
def summary_log = ''
|
|
summary_log += NfcoreTemplate.logo(workflow, params.monochrome_logs)
|
|
summary_log += NfcoreSchema.paramsSummaryLog(workflow, params)
|
|
summary_log += '\n' + citation(workflow) + '\n'
|
|
summary_log += NfcoreTemplate.dashedLine(params.monochrome_logs)
|
|
return summary_log
|
|
}
|
|
|
|
//
|
|
// Validate parameters and print summary to screen
|
|
//
|
|
public static void initialise(workflow, params, log) {
|
|
// Print help to screen if required
|
|
if (params.help) {
|
|
log.info help(workflow, params)
|
|
System.exit(0)
|
|
}
|
|
|
|
// Print workflow version and exit on --version
|
|
if (params.version) {
|
|
String workflow_version = NfcoreTemplate.version(workflow)
|
|
log.info "${workflow.manifest.name} ${workflow_version}"
|
|
System.exit(0)
|
|
}
|
|
|
|
// Print parameter summary log to screen
|
|
log.info paramsSummaryLog(workflow, params)
|
|
|
|
// Validate workflow parameters via the JSON schema
|
|
if (params.validate_params) {
|
|
NfcoreSchema.validateParameters(workflow, params, log)
|
|
}
|
|
|
|
// Check that a -profile or Nextflow config has been provided to run the pipeline
|
|
NfcoreTemplate.checkConfigProvided(workflow, log)
|
|
|
|
// Check that conda channels are set-up correctly
|
|
if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) {
|
|
Utils.checkCondaChannels(log)
|
|
}
|
|
|
|
// Check AWS batch settings
|
|
NfcoreTemplate.awsBatch(workflow, params)
|
|
|
|
// Check input has been provided
|
|
if (!params.input) {
|
|
Nextflow.error("Please provide an input samplesheet to the pipeline e.g. '--input samplesheet.csv'")
|
|
}
|
|
}
|
|
//
|
|
// Get attribute from genome config file e.g. fasta
|
|
//
|
|
public static Object getGenomeAttribute(params, attribute) {
|
|
if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) {
|
|
if (params.genomes[ params.genome ].containsKey(attribute)) {
|
|
return params.genomes[ params.genome ][ attribute ]
|
|
}
|
|
}
|
|
return null
|
|
}
|
|
|
|
}
|