From fbed1fd22e041d718fdabe4ef4ce03221f63b696 Mon Sep 17 00:00:00 2001 From: TernovojD Date: Wed, 8 May 2024 12:20:09 +0200 Subject: [PATCH 1/6] Initial Commit Help Pages --- eval.nf | 8 +++++ hap.nf | 8 +++++ nextflow.config | 1 + src/data_class.groovy | 78 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 src/data_class.groovy diff --git a/eval.nf b/eval.nf index f5e45bd..088c711 100644 --- a/eval.nf +++ b/eval.nf @@ -1,3 +1,10 @@ +//load in help function +File data_class_file = new File("./src/data_class.groovy"); +Class groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(data_class_file); +GroovyObject data_class = (GroovyObject) groovyClass.newInstance(); + +if (params.help) { exit 0, data_class.helpEval(workflow.manifest.version) } + // include modules - here, modules are single processes include { SAMTOOLS_FAIDX } from './modules/samtools/faidx/main.nf' include { HAPPY } from './modules/happy/main.nf' @@ -50,3 +57,4 @@ workflow{ SOMPY_SUMMARY(ch_csv.collect()) } + diff --git a/hap.nf b/hap.nf index 1a363d4..f03230b 100644 --- a/hap.nf +++ b/hap.nf @@ -1,3 +1,11 @@ +//load in help function +File data_class_file = new File("./src/data_class.groovy"); +Class groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(data_class_file); +GroovyObject data_class = (GroovyObject) groovyClass.newInstance(); + +if (params.help) { exit 0, data_class.helpHap(workflow.manifest.version, params.nb_frag, params.fragment_min_size, params.fragment_max_size, params.fragment_mean_size, + params.fragment_size_std_dev, params.illumina_read_length, params.dna_type, params.model_prefix, params.model_caller, params.median_length, params.sd_length, params.nb_reads) } + // include modules - here, modules are single processes //include { AMPLISIM } from './modules/amplisim/main.nf' include { MASON_SIMULATOR } from './modules/mason/simulator/main.nf' diff --git a/nextflow.config b/nextflow.config index f49f4c6..36acb03 100644 --- a/nextflow.config +++ b/nextflow.config @@ -15,6 +15,7 @@ params { read_type = 'ngs' // General parameters + help = false seed = 479 outdir = 'results' diff --git a/src/data_class.groovy b/src/data_class.groovy new file mode 100644 index 0000000..b958c6c --- /dev/null +++ b/src/data_class.groovy @@ -0,0 +1,78 @@ +class Helper { + def helpEval(version){ + String c_green = "\033[0;32m"; + String c_reset = "\033[0m"; + String c_yellow = "\033[0;33m"; + String c_blue = "\033[0;34m"; + String c_red = "\u001B[31m"; + String c_dim = "\033[2m"; + log.info """ + ____________________________________________________________________________________________ + + ${c_blue}Robert Koch Institute, MF1 Bioinformatics${c_reset} + + Workflow: cievad (${version}) + + ${c_yellow}Minimal Usage Examples:${c_reset} + + nextflow run eval.nf -profile local,conda --callsets_dir + or + nextflow run eval.nf -profile local,conda --sample_sheet + + ${c_yellow}Data Input, required:${c_reset} + + ${c_green} --callsets_dir ${c_reset} Directory containing variant callsets for evaluation (naming format: callset_.vcf[.gz]). + OR + ${c_green} --sample_sheet ${c_reset} Sample sheet (.csv) with the header ("index","truthset","callset"), mapping corresponding truth- and callsets. + """ + } + + def helpHap(version,nb_frag,fragment_min_size,fragment_max_size,fragment_mean_size,fragment_size_std_dev, + illumina_read_length, dna_type, model_prefix, model_caller, median_length, sd_length, nb_reads){ + String c_green = "\033[0;32m"; + String c_reset = "\033[0m"; + String c_yellow = "\033[0;33m"; + String c_blue = "\033[0;34m"; + String c_red = "\u001B[31m"; + String c_dim = "\033[2m"; + log.info """ + ____________________________________________________________________________________________ + + ${c_blue}Robert Koch Institute, MF1 Bioinformatics${c_reset} + + Workflow: cievad (${version}) + + ${c_yellow}Minimal Usage Example:${c_reset} + + nextflow run hap.nf -profile local,conda + + ${c_yellow}Individual Parameter, required:${c_reset} + + ${c_green} --n ${c_reset} number of synthetic samples to be generated + ${c_green} --reference ${c_reset} reference used for the generation of synthetic sequencing data + ${c_green} --read_type ${c_reset} type of resulting WGS synthetic reads (options: ngs, ont) + + ${c_yellow}Output Directory, required:${c_reset} + + ${c_green} --outdir ${c_reset} directory to save results in + + ${c_yellow}Next Generation Sequencing (WGS) Parameter, required if [--read_type ngs] supplied ${c_reset} + + ${c_green} --nb_frag ${c_reset} number of fragments per sample [default: ${nb_frag}] + ${c_green} --fragment_min_size ${c_reset} minimum size of fragments [default: ${fragment_min_size}] + ${c_green} --fragment_max_size ${c_reset} maximum size of fragments [default: ${fragment_max_size}] + ${c_green} --fragment_mean_size ${c_reset} mean size of fragments [default: ${fragment_mean_size}] + ${c_green} --fragment_size_std_dev ${c_reset} standard deviation for fragment size [default: ${fragment_size_std_dev}] + ${c_green} --illumina_read_length ${c_reset} read length of synthetic illumina reads [default: ${illumina_read_length}] + + ${c_yellow}Nanopore Sequencing (WGS) Parameter, required if [--read_type ont] supplied ${c_reset} + + ${c_green} --dna_type ${c_reset} used DNA type [default: ${dna_type}] + ${c_green} --model_prefix ${c_reset} path and prefix of the used model (e.g.: ${model_prefix}) + ${c_green} --model_caller ${c_reset} algorithm to conduct the basecalling [default: ${model_caller}] + ${c_green} --median_length ${c_reset} median length of the resulting synthetic reads [default: ${median_length}] + ${c_green} --sd_length ${c_reset} standard deviation length of the resulting synthetic reads [default: ${sd_length}] + ${c_green} --nb_reads ${c_reset} number of synthetic reads [default: ${nb_reads}] + """ + } +} \ No newline at end of file From 0b2a1f5d2dd6ee19da7e6cadc38e9a9c7896065f Mon Sep 17 00:00:00 2001 From: TernovojD Date: Wed, 8 May 2024 12:55:01 +0200 Subject: [PATCH 2/6] added VERSIONS file and improved the help pages call --- hap.nf | 3 +-- nextflow.config | 2 +- src/data_class.groovy | 27 +++++++++++++-------------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/hap.nf b/hap.nf index f03230b..6a7547b 100644 --- a/hap.nf +++ b/hap.nf @@ -3,8 +3,7 @@ File data_class_file = new File("./src/data_class.groovy"); Class groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(data_class_file); GroovyObject data_class = (GroovyObject) groovyClass.newInstance(); -if (params.help) { exit 0, data_class.helpHap(workflow.manifest.version, params.nb_frag, params.fragment_min_size, params.fragment_max_size, params.fragment_mean_size, - params.fragment_size_std_dev, params.illumina_read_length, params.dna_type, params.model_prefix, params.model_caller, params.median_length, params.sd_length, params.nb_reads) } +if (params.help) { exit 0, data_class.helpHap(workflow.manifest.version, params) } // include modules - here, modules are single processes //include { AMPLISIM } from './modules/amplisim/main.nf' diff --git a/nextflow.config b/nextflow.config index 36acb03..60e0aa4 100644 --- a/nextflow.config +++ b/nextflow.config @@ -4,7 +4,7 @@ manifest { description = 'A workflow for a simple, streamlined and rapid evaluation of variant callsets ' author = 'Thomas Krannich' nextflowVersion = '>=20.04.0' - version = '0.2.0' + version = new File('VERSION').text.trim() } // Parameters that are accessible in the pipeline script diff --git a/src/data_class.groovy b/src/data_class.groovy index b958c6c..69f0566 100644 --- a/src/data_class.groovy +++ b/src/data_class.groovy @@ -27,8 +27,7 @@ class Helper { """ } - def helpHap(version,nb_frag,fragment_min_size,fragment_max_size,fragment_mean_size,fragment_size_std_dev, - illumina_read_length, dna_type, model_prefix, model_caller, median_length, sd_length, nb_reads){ + def helpHap(version,params){ String c_green = "\033[0;32m"; String c_reset = "\033[0m"; String c_yellow = "\033[0;33m"; @@ -58,21 +57,21 @@ class Helper { ${c_yellow}Next Generation Sequencing (WGS) Parameter, required if [--read_type ngs] supplied ${c_reset} - ${c_green} --nb_frag ${c_reset} number of fragments per sample [default: ${nb_frag}] - ${c_green} --fragment_min_size ${c_reset} minimum size of fragments [default: ${fragment_min_size}] - ${c_green} --fragment_max_size ${c_reset} maximum size of fragments [default: ${fragment_max_size}] - ${c_green} --fragment_mean_size ${c_reset} mean size of fragments [default: ${fragment_mean_size}] - ${c_green} --fragment_size_std_dev ${c_reset} standard deviation for fragment size [default: ${fragment_size_std_dev}] - ${c_green} --illumina_read_length ${c_reset} read length of synthetic illumina reads [default: ${illumina_read_length}] + ${c_green} --nb_frag ${c_reset} number of fragments per sample [default: ${params.nb_frag}] + ${c_green} --fragment_min_size ${c_reset} minimum size of fragments [default: ${params.fragment_min_size}] + ${c_green} --fragment_max_size ${c_reset} maximum size of fragments [default: ${params.fragment_max_size}] + ${c_green} --fragment_mean_size ${c_reset} mean size of fragments [default: ${params.fragment_mean_size}] + ${c_green} --fragment_size_std_dev ${c_reset} standard deviation for fragment size [default: ${params.fragment_size_std_dev}] + ${c_green} --illumina_read_length ${c_reset} read length of synthetic illumina reads [default: ${params.illumina_read_length}] ${c_yellow}Nanopore Sequencing (WGS) Parameter, required if [--read_type ont] supplied ${c_reset} - ${c_green} --dna_type ${c_reset} used DNA type [default: ${dna_type}] - ${c_green} --model_prefix ${c_reset} path and prefix of the used model (e.g.: ${model_prefix}) - ${c_green} --model_caller ${c_reset} algorithm to conduct the basecalling [default: ${model_caller}] - ${c_green} --median_length ${c_reset} median length of the resulting synthetic reads [default: ${median_length}] - ${c_green} --sd_length ${c_reset} standard deviation length of the resulting synthetic reads [default: ${sd_length}] - ${c_green} --nb_reads ${c_reset} number of synthetic reads [default: ${nb_reads}] + ${c_green} --dna_type ${c_reset} used DNA type [default: ${params.dna_type}] + ${c_green} --model_prefix ${c_reset} path and prefix of the used model (e.g.: ${params.model_prefix}) + ${c_green} --model_caller ${c_reset} algorithm to conduct the basecalling [default: ${params.model_caller}] + ${c_green} --median_length ${c_reset} median length of the resulting synthetic reads [default: ${params.median_length}] + ${c_green} --sd_length ${c_reset} standard deviation length of the resulting synthetic reads [default: ${params.sd_length}] + ${c_green} --nb_reads ${c_reset} number of synthetic reads [default: ${params.nb_reads}] """ } } \ No newline at end of file From 7896f3a0476abc50559110f306d406096db8c3b6 Mon Sep 17 00:00:00 2001 From: TernovojD Date: Wed, 8 May 2024 13:11:11 +0200 Subject: [PATCH 3/6] adding VERSION file --- VERSION | 1 + nextflow.config | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 VERSION diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..12ca3c5 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +'0.2.0' \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index 60e0aa4..efe1566 100644 --- a/nextflow.config +++ b/nextflow.config @@ -4,7 +4,7 @@ manifest { description = 'A workflow for a simple, streamlined and rapid evaluation of variant callsets ' author = 'Thomas Krannich' nextflowVersion = '>=20.04.0' - version = new File('VERSION').text.trim() + version = new File('./VERSION').text.trim() } // Parameters that are accessible in the pipeline script From 933559b27588f7ac9ef0d9795231b76f99dda7e2 Mon Sep 17 00:00:00 2001 From: Krannich479 Date: Tue, 14 May 2024 15:24:33 +0200 Subject: [PATCH 4/6] update help pages --- eval.nf | 2 +- src/data_class.groovy | 50 +++++++++++++++++++++++-------------------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/eval.nf b/eval.nf index 088c711..19a1006 100644 --- a/eval.nf +++ b/eval.nf @@ -3,7 +3,7 @@ File data_class_file = new File("./src/data_class.groovy"); Class groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(data_class_file); GroovyObject data_class = (GroovyObject) groovyClass.newInstance(); -if (params.help) { exit 0, data_class.helpEval(workflow.manifest.version) } +if (params.help) { exit 0, data_class.helpEval(workflow.manifest.version, params) } // include modules - here, modules are single processes include { SAMTOOLS_FAIDX } from './modules/samtools/faidx/main.nf' diff --git a/src/data_class.groovy b/src/data_class.groovy index 69f0566..3420440 100644 --- a/src/data_class.groovy +++ b/src/data_class.groovy @@ -1,5 +1,5 @@ class Helper { - def helpEval(version){ + def helpEval(version,params){ String c_green = "\033[0;32m"; String c_reset = "\033[0m"; String c_yellow = "\033[0;33m"; @@ -9,9 +9,9 @@ class Helper { log.info """ ____________________________________________________________________________________________ - ${c_blue}Robert Koch Institute, MF1 Bioinformatics${c_reset} + ${c_blue}Robert Koch Institute, Genome Competence Center${c_reset} - Workflow: cievad (${version}) + Workflow: cievad (${version}) - evaluation of callsets ${c_yellow}Minimal Usage Examples:${c_reset} @@ -19,11 +19,15 @@ class Helper { or nextflow run eval.nf -profile local,conda --sample_sheet - ${c_yellow}Data Input, required:${c_reset} + ${c_yellow}Input parameter (required):${c_reset} - ${c_green} --callsets_dir ${c_reset} Directory containing variant callsets for evaluation (naming format: callset_.vcf[.gz]). + ${c_green} --callsets_dir ${c_reset} Directory containing variant callsets for evaluation (files of format: callset_.vcf[.gz]), where is the index of the corresponding truthset. OR - ${c_green} --sample_sheet ${c_reset} Sample sheet (.csv) with the header ("index","truthset","callset"), mapping corresponding truth- and callsets. + ${c_green} --sample_sheet ${c_reset} Sample sheet (.csv) with the header "index,truthset,callset". Every following line contains an index and matching truth- and callset. + + ${c_yellow}Other workflow parameter:${c_reset} + + ${c_green} --outdir ${c_reset} directory to save results in [default: ${params.outdir}] """ } @@ -37,25 +41,25 @@ class Helper { log.info """ ____________________________________________________________________________________________ - ${c_blue}Robert Koch Institute, MF1 Bioinformatics${c_reset} + ${c_blue}Robert Koch Institute, Genome Competence Center${c_reset} - Workflow: cievad (${version}) + Workflow: cievad (${version}) - haplotype generation ${c_yellow}Minimal Usage Example:${c_reset} - nextflow run hap.nf -profile local,conda + nextflow run hap.nf -profile local,conda --reference - ${c_yellow}Individual Parameter, required:${c_reset} + ${c_yellow}Input parameter (required):${c_reset} - ${c_green} --n ${c_reset} number of synthetic samples to be generated - ${c_green} --reference ${c_reset} reference used for the generation of synthetic sequencing data - ${c_green} --read_type ${c_reset} type of resulting WGS synthetic reads (options: ngs, ont) + ${c_green} --reference ${c_reset} reference genome (.fasta) used for the generation of synthetic sequencing data - ${c_yellow}Output Directory, required:${c_reset} + ${c_yellow}Other workflow parameter:${c_reset} - ${c_green} --outdir ${c_reset} directory to save results in + ${c_green} --n ${c_reset} number of synthetic samples to be generated [default: ${params.n}] + ${c_green} --read_type ${c_reset} type of synthetic reads to be generated (options: ngs, ont) [default: ${params.read_type}] + ${c_green} --outdir ${c_reset} directory to save results in [default: ${params.outdir}] - ${c_yellow}Next Generation Sequencing (WGS) Parameter, required if [--read_type ngs] supplied ${c_reset} + ${c_yellow}Next Generation Sequencing parameter, optional if [--read_type ngs] is supplied ${c_reset} ${c_green} --nb_frag ${c_reset} number of fragments per sample [default: ${params.nb_frag}] ${c_green} --fragment_min_size ${c_reset} minimum size of fragments [default: ${params.fragment_min_size}] @@ -64,14 +68,14 @@ class Helper { ${c_green} --fragment_size_std_dev ${c_reset} standard deviation for fragment size [default: ${params.fragment_size_std_dev}] ${c_green} --illumina_read_length ${c_reset} read length of synthetic illumina reads [default: ${params.illumina_read_length}] - ${c_yellow}Nanopore Sequencing (WGS) Parameter, required if [--read_type ont] supplied ${c_reset} + ${c_yellow}Nanopore Sequencing parameter, optional if [--read_type ont] is supplied ${c_reset} - ${c_green} --dna_type ${c_reset} used DNA type [default: ${params.dna_type}] - ${c_green} --model_prefix ${c_reset} path and prefix of the used model (e.g.: ${params.model_prefix}) + ${c_green} --dna_type ${c_reset} used DNA type (options: linear, circular) [default: ${params.dna_type}] + ${c_green} --model_prefix ${c_reset} path and prefix of a NanoSim model [default: ${params.model_prefix}] ${c_green} --model_caller ${c_reset} algorithm to conduct the basecalling [default: ${params.model_caller}] - ${c_green} --median_length ${c_reset} median length of the resulting synthetic reads [default: ${params.median_length}] - ${c_green} --sd_length ${c_reset} standard deviation length of the resulting synthetic reads [default: ${params.sd_length}] - ${c_green} --nb_reads ${c_reset} number of synthetic reads [default: ${params.nb_reads}] + ${c_green} --median_length ${c_reset} median length of the synthetic reads [default: ${params.median_length}] + ${c_green} --sd_length ${c_reset} standard deviation of the synthetic read lengths [default: ${params.sd_length}] + ${c_green} --nb_reads ${c_reset} number of synthetic reads per sample [default: ${params.nb_reads}] """ } -} \ No newline at end of file +} From ea97feec8ed00ccda45f1698502d96a237920c15 Mon Sep 17 00:00:00 2001 From: Thomas Krannich Date: Tue, 14 May 2024 15:28:51 +0200 Subject: [PATCH 5/6] Update VERSION --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 12ca3c5..92e23f0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -'0.2.0' \ No newline at end of file +'0.3.0' From 5e6528585896fece825c181e704815b7d50cb554 Mon Sep 17 00:00:00 2001 From: TernovojD Date: Thu, 16 May 2024 11:01:51 +0200 Subject: [PATCH 6/6] name changes for HelppagesClass import --- eval.nf | 8 ++++---- hap.nf | 8 ++++---- src/{data_class.groovy => Helppages.groovy} | 0 3 files changed, 8 insertions(+), 8 deletions(-) rename src/{data_class.groovy => Helppages.groovy} (100%) diff --git a/eval.nf b/eval.nf index 19a1006..108d7da 100644 --- a/eval.nf +++ b/eval.nf @@ -1,9 +1,9 @@ //load in help function -File data_class_file = new File("./src/data_class.groovy"); -Class groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(data_class_file); -GroovyObject data_class = (GroovyObject) groovyClass.newInstance(); +File helppages_class_file = new File("./src/Helppages.groovy"); +Class HelppagesClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(helppages_class_file); +GroovyObject help = (GroovyObject) HelppagesClass.newInstance(); -if (params.help) { exit 0, data_class.helpEval(workflow.manifest.version, params) } +if (params.help) { exit 0, help.helpEval(workflow.manifest.version, params) } // include modules - here, modules are single processes include { SAMTOOLS_FAIDX } from './modules/samtools/faidx/main.nf' diff --git a/hap.nf b/hap.nf index 6a7547b..fe630be 100644 --- a/hap.nf +++ b/hap.nf @@ -1,9 +1,9 @@ //load in help function -File data_class_file = new File("./src/data_class.groovy"); -Class groovyClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(data_class_file); -GroovyObject data_class = (GroovyObject) groovyClass.newInstance(); +File helppages_class_file = new File("./src/Helppages.groovy"); +Class HelppagesClass = new GroovyClassLoader(getClass().getClassLoader()).parseClass(helppages_class_file); +GroovyObject help = (GroovyObject) HelppagesClass.newInstance(); -if (params.help) { exit 0, data_class.helpHap(workflow.manifest.version, params) } +if (params.help) { exit 0, help.helpHap(workflow.manifest.version, params) } // include modules - here, modules are single processes //include { AMPLISIM } from './modules/amplisim/main.nf' diff --git a/src/data_class.groovy b/src/Helppages.groovy similarity index 100% rename from src/data_class.groovy rename to src/Helppages.groovy