2022-02-18 06:55:14 +00:00
//
// This file holds several functions specific to the workflow/taxprofiler.nf in the nf-core/taxprofiler pipeline
//
2023-04-28 14:26:38 +00:00
import nextflow.Nextflow
2022-10-05 03:30:53 +00:00
import groovy.text.SimpleTemplateEngine
2022-02-18 06:55:14 +00:00
class WorkflowTaxprofiler {
//
// Check and validate parameters
//
2023-04-29 16:08:00 +00:00
/ *
2022-02-18 06:55:14 +00:00
public static void initialise ( params , log ) {
genomeExistsError ( params , log )
if ( ! params . fasta ) {
2023-04-28 14:26:38 +00:00
Nextflow . error "Genome fasta file not specified with e.g. '--fasta genome.fa' or via a detectable config file."
2022-02-18 06:55:14 +00:00
}
}
2023-04-29 16:08:00 +00:00
* /
2022-02-18 06:55:14 +00:00
//
// Get workflow summary for MultiQC
//
public static String paramsSummaryMultiqc ( workflow , summary ) {
String summary_section = ''
for ( group in summary . keySet ( ) ) {
def group_params = summary . get ( group ) // This gets the parameters of that particular group
if ( group_params ) {
summary_section + = " <p style=\"font-size:110%\"><b>$group</b></p>\n"
summary_section + = " <dl class=\"dl-horizontal\">\n"
for ( param in group_params . keySet ( ) ) {
summary_section + = " <dt>$param</dt><dd><samp>${group_params.get(param) ?: '<span style=\"color:#999999;\">N/A</a>'}</samp></dd>\n"
}
summary_section + = " </dl>\n"
}
}
String yaml_file_text = "id: '${workflow.manifest.name.replace('/','-')}-summary'\n"
yaml_file_text + = "description: ' - this information is collected when the pipeline is started.'\n"
yaml_file_text + = "section_name: '${workflow.manifest.name} Workflow Summary'\n"
yaml_file_text + = "section_href: 'https://github.com/${workflow.manifest.name}'\n"
yaml_file_text + = "plot_type: 'html'\n"
yaml_file_text + = "data: |\n"
yaml_file_text + = "${summary_section}"
return yaml_file_text
2022-10-05 03:30:53 +00:00
}
public static String methodsDescriptionText ( run_workflow , mqc_methods_yaml ) {
// Convert to a named map so can be used as with familar NXF ${workflow} variable syntax in the MultiQC YML file
def meta = [ : ]
meta . workflow = run_workflow . toMap ( )
meta [ "manifest_map" ] = run_workflow . manifest . toMap ( )
meta [ "doi_text" ] = meta . manifest_map . doi ? "(doi: <a href=\'https://doi.org/${meta.manifest_map.doi}\'>${meta.manifest_map.doi}</a>)" : ""
meta [ "nodoi_text" ] = meta . manifest_map . doi ? "" : "<li>If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used. </li>"
def methods_text = mqc_methods_yaml . text
def engine = new SimpleTemplateEngine ( )
def description_html = engine . createTemplate ( methods_text ) . make ( meta )
return description_html
2023-04-28 14:26:38 +00:00
}
//
2022-02-18 06:55:14 +00:00
// Exit pipeline if incorrect --genome key provided
//
private static void genomeExistsError ( params , log ) {
if ( params . genomes & & params . genome & & ! params . genomes . containsKey ( params . genome ) ) {
2023-04-28 14:26:38 +00:00
def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
2022-02-18 06:55:14 +00:00
" Genome '${params.genome}' not found in any config files provided to the pipeline.\n" +
" Currently, the available genome keys are:\n" +
" ${params.genomes.keySet().join(" , ")}\n" +
2022-03-15 21:05:37 +00:00
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
2023-04-28 14:26:38 +00:00
Nextflow . error ( error_string )
2022-02-18 06:55:14 +00:00
}
}
}