diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv index 82842ce..410a602 100644 --- a/assets/samplesheet.csv +++ b/assets/samplesheet.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles -sample1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json -sample2,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json -sample3,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json +sample,fastmatch_category,mlst_alleles +sample1,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json +sample2,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json +sample3,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json diff --git a/assets/schema_input.json b/assets/schema_input.json index 1c141a0..651d179 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -25,6 +25,13 @@ "pattern": "^\\S+\\.mlst(\\.subtyping)?\\.json(\\.gz)?$", "errorMessage": "MLST JSON file from locidex report, cannot contain spaces and must have the extension: '.mlst.json', '.mlst.json.gz', '.mlst.subtyping.json', or 'mlst.subtyping.json.gz'" }, + "fastmatch_category": { + "type": "string", + "errorMessage": "Has to be either query or reference", + "description": "Identify whether a sample is query or reference", + "fa_icon": "far fa-sticky-note", + "enum": ["query", "reference"] + }, "metadata_1": { "type": "string", "meta": ["metadata_1"], diff --git a/conf/iridanext.config b/conf/iridanext.config index d5d6156..3299e55 100644 --- a/conf/iridanext.config +++ b/conf/iridanext.config @@ -7,11 +7,6 @@ iridanext { files { idkey = "irida_id" global = [ - "**/ArborView/arborview.clustered_data_arborview.html", - "**/clusters/gas.mcluster.clusters.text", - "**/clusters/gas.mcluster.run.json", - "**/clusters/gas.mcluster.thresholds.json", - "**/clusters/gas.mcluster.tree.nwk", "**/distances/profile_dists.allele_map.json", "**/distances/profile_dists.query_profile.text", "**/distances/profile_dists.ref_profile.text", diff --git a/nextflow.config b/nextflow.config index ae2c268..e47fd88 100644 --- a/nextflow.config +++ b/nextflow.config @@ -43,6 +43,9 @@ params { validationShowHiddenParams = false validate_params = true + // FastMatch + threshold = 1.0 + // Profile dists args pd_distm = "hamming" pd_missing_threshold = 1.0 @@ -53,11 +56,6 @@ params { pd_columns = null pd_count_missing = false - // GAS Cluster - gm_thresholds = "10,5,0" - gm_method = "average" - gm_delimiter = "." - // Metadata metadata_1_header = "metadata_1" metadata_2_header = "metadata_2" diff --git a/nextflow_schema.json b/nextflow_schema.json index dcd7c07..8db48af 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -104,6 +104,20 @@ }, "fa_icon": "far fa-clipboard" }, + "fastmatch": { + "title": "FastMatch", + "type": "object", + "description": "Parameters for FastMatch", + "default": "", + "properties": { + "threshold": { + "type": "number", + "description": "Comparison score threshold value", + "default": 1.0, + "minimum": 0 + } + } + }, "profile_dists": { "title": "Profile Dists", "type": "object", @@ -161,32 +175,6 @@ } } }, - "gas_cluster": { - "title": "GAS Cluster", - "type": "object", - "description": "", - "default": "Parameters for GAS mcluster", - "properties": { - "gm_thresholds": { - "type": "string", - "default": "10,5,0", - "description": "Thresholds delimited by ','. Values should match units from '--pd_distm' (either 'hamming' or 'scaled').", - "pattern": "^(\\d+(\\.\\d+)?,)*\\d+(\\.\\d+)?$" - }, - "gm_method": { - "type": "string", - "default": "average", - "description": "Clustering linkage method.", - "enum": ["single", "average", "complete"] - }, - "gm_delimiter": { - "type": "string", - "default": ".", - "description": "Delimiter desired for nomenclature code. Must be alphanumeric or one of [._-].", - "pattern": "^[A-Fa-f0-9\\._-]+$" - } - } - }, "institutional_config_options": { "title": "Institutional config options", "type": "object", @@ -346,13 +334,13 @@ "$ref": "#/definitions/input_output_options" }, { - "$ref": "#/definitions/metadata" + "$ref": "#/definitions/fastmatch" }, { - "$ref": "#/definitions/profile_dists" + "$ref": "#/definitions/metadata" }, { - "$ref": "#/definitions/gas_cluster" + "$ref": "#/definitions/profile_dists" }, { "$ref": "#/definitions/institutional_config_options" diff --git a/tests/data/samplesheets/samplesheet-addsamplename.csv b/tests/data/samplesheets/samplesheet-addsamplename.csv index a1b785a..48cc046 100644 --- a/tests/data/samplesheets/samplesheet-addsamplename.csv +++ b/tests/data/samplesheets/samplesheet-addsamplename.csv @@ -1,4 +1,4 @@ -sample,sample_name,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sample1,S 1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8 -sample2,S2#,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8 -sample3,S2_,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8 +sample,fastmatch_category,sample_name,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sample1,query,S 1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8 +sample2,query,S2#,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8 +sample3,reference,S2_,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8 diff --git a/tests/data/samplesheets/samplesheet-hamming.csv b/tests/data/samplesheets/samplesheet-hamming.csv index d18a69c..0e03c71 100644 --- a/tests/data/samplesheets/samplesheet-hamming.csv +++ b/tests/data/samplesheets/samplesheet-hamming.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sample1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hamming/sample1.mlst.subtyping.json,,,,,,,, -sample2,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hamming/sample2.mlst.subtyping.json,,,,,,,, -sample3,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hamming/sample3.mlst.subtyping.json,,,,,,,, +sample,fastmatch_category,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sample1,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hamming/sample1.mlst.subtyping.json,,,,,,,, +sample2,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hamming/sample2.mlst.subtyping.json,,,,,,,, +sample3,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hamming/sample3.mlst.subtyping.json,,,,,,,, diff --git a/tests/data/samplesheets/samplesheet-hash-missing.csv b/tests/data/samplesheets/samplesheet-hash-missing.csv index 9355c3d..d06d53a 100644 --- a/tests/data/samplesheets/samplesheet-hash-missing.csv +++ b/tests/data/samplesheets/samplesheet-hash-missing.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sample1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample1.mlst.subtyping.json,,,,,,,, -sample2,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample2.mlst.subtyping.json,,,,,,,, -sample3,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample3.mlst.subtyping.json,,,,,,,, +sample,fastmatch_category,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sample1,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample1.mlst.subtyping.json,,,,,,,, +sample2,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample2.mlst.subtyping.json,,,,,,,, +sample3,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample3.mlst.subtyping.json,,,,,,,, diff --git a/tests/data/samplesheets/samplesheet-hash-more-missing.csv b/tests/data/samplesheets/samplesheet-hash-more-missing.csv index 4ee53c9..5c4a4b4 100644 --- a/tests/data/samplesheets/samplesheet-hash-more-missing.csv +++ b/tests/data/samplesheets/samplesheet-hash-more-missing.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sample1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample1.mlst.subtyping.json,,,,,,,, -sample2,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample2.mlst.subtyping.json,,,,,,,, -sample3,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample3-more-missing.mlst.subtyping.json,,,,,,,, +sample,fastmatch_category,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sample1,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample1.mlst.subtyping.json,,,,,,,, +sample2,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample2.mlst.subtyping.json,,,,,,,, +sample3,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/case-hash-missing/sample3-more-missing.mlst.subtyping.json,,,,,,,, diff --git a/tests/data/samplesheets/samplesheet-little-metadata.csv b/tests/data/samplesheets/samplesheet-little-metadata.csv index 3e721de..138469e 100644 --- a/tests/data/samplesheets/samplesheet-little-metadata.csv +++ b/tests/data/samplesheets/samplesheet-little-metadata.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sample1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,,,,1.4,,,, -sample2,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,,,,,,,, -sample3,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,,,,,,3.8 +sample,fastmatch_category,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sample1,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,,,,1.4,,,, +sample2,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,,,,,,,, +sample3,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,,,,,,3.8 diff --git a/tests/data/samplesheets/samplesheet-mismatched-ids.csv b/tests/data/samplesheets/samplesheet-mismatched-ids.csv index 632768d..ffef4ca 100644 --- a/tests/data/samplesheets/samplesheet-mismatched-ids.csv +++ b/tests/data/samplesheets/samplesheet-mismatched-ids.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sampleA,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8 -sampleB,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8 -sampleC,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8 +sample,fastmatch_category,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sampleA,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8 +sampleB,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8 +sampleC,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8 diff --git a/tests/data/samplesheets/samplesheet-no-metadata.csv b/tests/data/samplesheets/samplesheet-no-metadata.csv index 9d67864..f752374 100644 --- a/tests/data/samplesheets/samplesheet-no-metadata.csv +++ b/tests/data/samplesheets/samplesheet-no-metadata.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sample1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,,,,,,,, -sample2,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,,,,,,,, -sample3,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,,,,,,,, +sample,fastmatch_category,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sample1,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,,,,,,,, +sample2,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,,,,,,,, +sample3,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,,,,,,,, diff --git a/tests/data/samplesheets/samplesheet-partial-mismatched-ids.csv b/tests/data/samplesheets/samplesheet-partial-mismatched-ids.csv index d5d42f0..ab5abab 100644 --- a/tests/data/samplesheets/samplesheet-partial-mismatched-ids.csv +++ b/tests/data/samplesheets/samplesheet-partial-mismatched-ids.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sampleA,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8 -sampleB,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8 -sample3,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8 +sample,fastmatch_category,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sampleA,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8 +sampleB,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8 +sample3,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8 diff --git a/tests/data/samplesheets/samplesheet-tabs.csv b/tests/data/samplesheets/samplesheet-tabs.csv index 56b4243..b863db5 100644 --- a/tests/data/samplesheets/samplesheet-tabs.csv +++ b/tests/data/samplesheets/samplesheet-tabs.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sample1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,a b,,,,,,, -sample2,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,,,,a b,,,, -sample3,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,,,,,,,,a b +sample,fastmatch_category,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sample1,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,a b,,,,,,, +sample2,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,,,,a b,,,, +sample3,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,,,,,,,,a b diff --git a/tests/data/samplesheets/samplesheet1.csv b/tests/data/samplesheets/samplesheet1.csv index 3200344..55cbc2d 100644 --- a/tests/data/samplesheets/samplesheet1.csv +++ b/tests/data/samplesheets/samplesheet1.csv @@ -1,4 +1,4 @@ -sample,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 -sample1,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8 -sample2,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8 -sample3,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8 +sample,fastmatch_category,mlst_alleles,metadata_1,metadata_2,metadata_3,metadata_4,metadata_5,metadata_6,metadata_7,metadata_8 +sample1,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample1.mlst.json,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8 +sample2,query,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample2.mlst.json,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8 +sample3,reference,https://raw.githubusercontent.com/phac-nml/gasclustering/dev/tests/data/reports/sample3.mlst.json,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8 diff --git a/tests/pipelines/main.nf.test b/tests/pipelines/main.nf.test index 14665d5..f960a2b 100644 --- a/tests/pipelines/main.nf.test +++ b/tests/pipelines/main.nf.test @@ -12,7 +12,6 @@ nextflow_pipeline { outdir = "results" pd_distm = "scaled" - gm_thresholds = "50,20,0" metadata_1_header = "myheader_1" metadata_2_header = "myheader_2" @@ -59,7 +58,6 @@ nextflow_pipeline { input = "$baseDir/tests/data/samplesheets/samplesheet-hamming.csv" outdir = "results" - gm_thresholds = "2,1,0" } } @@ -188,24 +186,6 @@ nextflow_pipeline { } } - test("Test fail pipeline if invalid delimiter set") { - tag "pipeline_failure_invalid_delimiter" - - when { - params { - input = "$baseDir/tests/data/samplesheets/samplesheet-hamming.csv" - outdir = "results" - - gm_delimiter = ';' - } - } - - then { - assert workflow.failed - assert workflow.stderr.contains('* --gm_delimiter: string [;] does not match pattern ^[A-Fa-f0-9\\._-]+$ (;)') - } - } - test("Full pipeline with no metadata") { tag "pipeline_no_metadata" diff --git a/tests/pipelines/main_gm_thresholds.nf.test b/tests/pipelines/main_gm_thresholds.nf.test index f72b365..aa90ecf 100644 --- a/tests/pipelines/main_gm_thresholds.nf.test +++ b/tests/pipelines/main_gm_thresholds.nf.test @@ -3,100 +3,6 @@ nextflow_pipeline { name "Integration Tests of adjusting gm_thresholds parameter for clustering" script "main.nf" - test("Test fail pipeline if null threshold set") { - tag "pipeline_failure_null_threshold" - - when { - params { - input = "$baseDir/tests/data/samplesheets/samplesheet-hamming.csv" - outdir = "results" - - gm_thresholds = null - } - } - - then { - assert workflow.failed - assert workflow.stdout.contains("ERROR ~ --gm_thresholds null: Cannot pass null or empty string") - } - } - - test("Test fail pipeline if empty threshold set") { - tag "pipeline_failure_no_threshold" - - when { - params { - input = "$baseDir/tests/data/samplesheets/samplesheet-hamming.csv" - outdir = "results" - - gm_thresholds = "" - } - } - - then { - assert workflow.failed - assert workflow.stdout.contains("ERROR ~ --gm_thresholds : Cannot pass null or empty string") - } - } - - test("Test fail pipeline if negative threshold set") { - tag "pipeline_failure_negative_threshold" - - when { - params { - input = "$baseDir/tests/data/samplesheets/samplesheet-hamming.csv" - outdir = "results" - - gm_thresholds = "-1" - } - } - - then { - assert workflow.failed - assert workflow.stderr.contains('* --gm_thresholds: string [-1] does not match pattern ^(\\d+(\\.\\d+)?,)*\\d+(\\.\\d+)?$ (-1)') - } - } - - test("Test fail pipeline if mismatch between thresholds and scaled distm") { - tag "pipeline_failure_threshold_scaled" - - when { - params { - input = "$baseDir/tests/data/samplesheets/samplesheet-hamming.csv" - outdir = "results" - - gm_thresholds = "200,50" - pd_distm = "scaled" - } - } - - then { - assert workflow.failed - assert workflow.stdout.contains("ERROR ~ '--pd_distm scaled' is set, but '--gm_thresholds 200,50' contains thresholds outside of range [0, 100]." - + " Please either set '--pd_distm hamming' or adjust the threshold values.") - } - } - - test("Test fail pipeline if mismatch between thresholds and hamming distm") { - tag "pipeline_failure_threshold_hamming" - - when { - params { - input = "$baseDir/tests/data/samplesheets/samplesheet-hamming.csv" - outdir = "results" - - gm_thresholds = "2,0.5" - pd_distm = "hamming" - } - } - - then { - assert workflow.failed - assert workflow.stdout.contains("ERROR ~ '--pd_distm hamming' is set, but '--gm_thresholds 2,0.5' contains fractions." - + " Please either set '--pd_distm scaled' or remove fractions from distance thresholds.") - } - } - test("Test pipeline with single threshold set to 0") { tag "pipeline_thresh_0" diff --git a/workflows/fastmatchirida.nf b/workflows/fastmatchirida.nf index 55c2301..c3ebb48 100644 --- a/workflows/fastmatchirida.nf +++ b/workflows/fastmatchirida.nf @@ -68,7 +68,6 @@ def prepareFilePath(String filep){ workflow FASTMATCH { SAMPLE_HEADER = "sample" ch_versions = Channel.empty() - // Track processed IDs def processedIDs = [] as Set @@ -76,7 +75,7 @@ workflow FASTMATCH { // NB: `input` corresponds to `params.input` and associated sample sheet schema input = Channel.fromSamplesheet("input") // and remove non-alphanumeric characters in sample_names (meta.id), whilst also correcting for duplicate sample_names (meta.id) - .map { meta, mlst_file -> + .map { meta, mlst_file, ref_query -> if (!meta.id) { meta.id = meta.irida_id } else { @@ -89,7 +88,12 @@ workflow FASTMATCH { } // Add the ID to the set of processed IDs processedIDs << meta.id - + // If the fastmatch_category is blank make the default "reference" + if (!ref_query) { + meta.ref_query = "reference" + } else { + meta.ref_query = ref_query + } tuple(meta, mlst_file)} // Make sure the ID in samplesheet / meta.id is the same ID // as the corresponding MLST JSON file: @@ -129,25 +133,18 @@ workflow FASTMATCH { exit 1, "--pd_columns ${params.pd_columns}: Does not exist but was passed to the pipeline. Exiting now." } - if(params.gm_thresholds == null || params.gm_thresholds == ""){ - exit 1, "--gm_thresholds ${params.gm_thresholds}: Cannot pass null or empty string" + // Check that only 'hamming' or 'scaled' are provided to pd_distm + if ((params.pd_distm != 'hamming') & (params.pd_distm != 'scaled')) { + exit 1, "'--pd_distm ${params.pd_distm}' is an invalid value. Please set to either 'hamming' or 'scaled'." } - gm_thresholds_list = params.gm_thresholds.toString().split(',') - if (params.pd_distm == 'hamming') { - if (gm_thresholds_list.any { it != null && it.contains('.') }) { - exit 1, ("'--pd_distm ${params.pd_distm}' is set, but '--gm_thresholds ${params.gm_thresholds}' contains fractions." - + " Please either set '--pd_distm scaled' or remove fractions from distance thresholds.") - } - } else if (params.pd_distm == 'scaled') { - if (gm_thresholds_list.any { it != null && (it as Float < 0.0 || it as Float > 100.0) }) { - exit 1, ("'--pd_distm ${params.pd_distm}' is set, but '--gm_thresholds ${params.gm_thresholds}' contains thresholds outside of range [0, 100]." - + " Please either set '--pd_distm hamming' or adjust the threshold values.") + // Check that when using scaled the threshold exists between 0-100 + if (params.pd_distm == 'scaled') { + if ((params.threshold < 0.0) || (params.threshold > 100.0)) { + exit 1, ("'--pd_distm ${params.pd_distm}' is set, but '--threshold ${params.threshold}' contains thresholds outside of range [0, 100]." + + " Please either set '--threshold' or adjust the threshold values.") } - } else { - exit 1, "'--pd_distm ${params.pd_distm}' is an invalid value. Please set to either 'hamming' or 'scaled'." } - // Options related to profile dists mapping_format = Channel.value("pairwise")