From 2d1aa5d4bb3f8d4b190dcc4d76714d807015a160 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Fri, 11 Aug 2023 12:12:58 -0400 Subject: [PATCH 01/32] lots of changes to ResFinder task. Added support for Shigella species to be run through E.coli pointfinder database, changed output file extensions for TSVs, exposed cpu and memory optional inputs, changed name of 2 input params to be more recognizeable --- tasks/gene_typing/task_resfinder.wdl | 53 ++++++++++++++++------------ 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index 500711e85..37e62f064 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -7,10 +7,12 @@ task resfinder { String? organism # Species in the sample, species should be entered with their full scientific names (e.g. "escherichia coli"), using quotation marks Boolean acquired = true # Run resfinder for acquired resistance genes Float min_cov = 0.6 # Minimum (breadth-of) coverage of ResFinder - Float threshold = 0.9 # Threshold for identity of ResFinder - Boolean point = false # Run pointfinder for chromosomal mutations + Float min_id = 0.9 # Threshold for identity of ResFinder + Boolean call_PointFinder = false # Run pointfinder for chromosomal mutations String docker = "us-docker.pkg.dev/general-theiagen/staphb/resfinder:4.1.11" Int disk_size = 100 + Int cpu = 2 + Int memory = 8 } command <<< date | tee DATE @@ -28,7 +30,8 @@ task resfinder { resfinder_organism="enterococcus faecalis" elif [[ "~{organism}" == *"Enterococcus"*"faecium"* ]]; then resfinder_organism="enterococcus faecium" - elif [[ "~{organism}" == *"Escherichia"*"coli"* ]]; then + # to allow for both E. coli and any Shigella species to be processed via PointFinder as E. coli + elif [[ "~{organism}" == *"Escherichia"*"coli"* ]] || [[ "~{organism}" == *"Shigella"* ]]; then resfinder_organism="escherichia coli" elif [[ "~{organism}" == *"Klebsiella"* ]]; then resfinder_organism="klebsiella" @@ -45,6 +48,7 @@ task resfinder { else echo "Either Gambit predicted taxon is not supported by resfinder or the user did not supply an organism as input." echo "Skipping the use of resfinder --species optional parameter." + echo "WARNING: This will disable PointFinder due to the requirement of --species flag." fi # if resfinder_organism variable is set, use --species flag, otherwise do not use --species flag @@ -55,52 +59,57 @@ task resfinder { --species "${resfinder_organism}" \ ~{true="--acquired" false="" acquired} \ ~{'--min_cov ' + min_cov} \ - ~{'--threshold ' + threshold} \ - ~{true="--point" false="" point} + ~{'--threshold ' + min_id} \ + ~{true="--point" false="" call_PointFinder} else + # pointfinder requires the use of the --species flag, so if resfinder_organism is not set, do not run pointfinder run_resfinder.py \ --inputfasta ~{assembly} \ --outputPath . \ --species "other" \ ~{true="--acquired" false="" acquired} \ ~{'--min_cov ' + min_cov} \ - ~{'--threshold ' + threshold} + ~{'--threshold ' + min_id} fi # replace space in resfinder_organism with underscore resfinder_organism="${resfinder_organism// /_}" # rename files - mv pheno_table.txt ~{samplename}_pheno_table.txt - if [ -f pheno_table_${resfinder_organism}.txt ]; then - mv pheno_table_${resfinder_organism}.txt ~{samplename}_pheno_table_species.txt + mv -v pheno_table.txt ~{samplename}_pheno_table.tsv + if [ -f "pheno_table_${resfinder_organism}.txt" ]; then + # rename file to have proper extension & samplename included + mv -v "pheno_table_${resfinder_organism}.txt" ~{samplename}_pheno_table_species.tsv fi - mv ResFinder_Hit_in_genome_seq.fsa ~{samplename}_ResFinder_Hit_in_genome_seq.fsa - mv ResFinder_Resistance_gene_seq.fsa ~{samplename}_ResFinder_Resistance_gene_seq.fsa - mv ResFinder_results_tab.txt ~{samplename}_ResFinder_results_tab.txt + mv -v ResFinder_Hit_in_genome_seq.fsa ~{samplename}_ResFinder_Hit_in_genome_seq.fsa + mv -v ResFinder_Resistance_gene_seq.fsa ~{samplename}_ResFinder_Resistance_gene_seq.fsa + mv -v ResFinder_results_tab.txt ~{samplename}_ResFinder_results_tab.tsv + + # if pointfinder was run, rename files if [ -f PointFinder_prediction.txt ]; then - mv PointFinder_prediction.txt ~{samplename}_PointFinder_prediction.txt - mv PointFinder_results.txt ~{samplename}_PointFinder_results.txt + mv -v PointFinder_prediction.txt ~{samplename}_PointFinder_prediction.tsv + mv -v PointFinder_results.txt ~{samplename}_PointFinder_results.tsv fi >>> output { - File resfinder_pheno_table = "~{samplename}_pheno_table.txt" - File? resfinder_pheno_table_species = "~{samplename}_pheno_table_species.txt" + File resfinder_pheno_table = "~{samplename}_pheno_table.tsv" + File? resfinder_pheno_table_species = "~{samplename}_pheno_table_species.tsv" File resfinder_hit_in_genome_seq = "~{samplename}_ResFinder_Hit_in_genome_seq.fsa" File resfinder_resistance_gene_seq = "~{samplename}_ResFinder_Resistance_gene_seq.fsa" - File resfinder_results_tab = "~{samplename}_ResFinder_results_tab.txt" - File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.txt" - File? pointfinder_results = "~{samplename}_PointFinder_results.txt" + File resfinder_results_tab = "~{samplename}_ResFinder_results_tab.tsv" + File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.tsv" + File? pointfinder_results = "~{samplename}_PointFinder_results.tsv" String resfinder_docker = "~{docker}" String resfinder_version = read_string("RESFINDER_VERSION") String resfinder_db_version = read_string("RESFINDER_DB_VERSION") } runtime { - memory: "8 GB" - cpu: 4 + memory: "~{memory} GB" + cpu: cpu docker: docker disks: "local-disk " + disk_size + " SSD" disk: disk_size + " GB" - maxRetries: 3 } + maxRetries: 3 + } } From 95f9fbad3c8f0ed94cea98b837a0f761396bd552 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Wed, 23 Aug 2023 09:57:43 -0400 Subject: [PATCH 02/32] update CI --- tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml | 2 +- tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index 3ba26335f..b586d0956 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml @@ -560,7 +560,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 18d0dd6560f88ed2541ad342e12412e8 + md5sum: 3ec9414a79c4067078fdff600e4c75fd - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml index 6d2a6ccbb..056a86754 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml @@ -530,7 +530,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 18d0dd6560f88ed2541ad342e12412e8 + md5sum: 3ec9414a79c4067078fdff600e4c75fd - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl From e2dfec4c686219e2e1bb23ece20c479774167ffb Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Fri, 11 Aug 2023 12:12:58 -0400 Subject: [PATCH 03/32] lots of changes to ResFinder task. Added support for Shigella species to be run through E.coli pointfinder database, changed output file extensions for TSVs, exposed cpu and memory optional inputs, changed name of 2 input params to be more recognizeable --- tasks/gene_typing/task_resfinder.wdl | 53 ++++++++++++++++------------ 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index 500711e85..37e62f064 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -7,10 +7,12 @@ task resfinder { String? organism # Species in the sample, species should be entered with their full scientific names (e.g. "escherichia coli"), using quotation marks Boolean acquired = true # Run resfinder for acquired resistance genes Float min_cov = 0.6 # Minimum (breadth-of) coverage of ResFinder - Float threshold = 0.9 # Threshold for identity of ResFinder - Boolean point = false # Run pointfinder for chromosomal mutations + Float min_id = 0.9 # Threshold for identity of ResFinder + Boolean call_PointFinder = false # Run pointfinder for chromosomal mutations String docker = "us-docker.pkg.dev/general-theiagen/staphb/resfinder:4.1.11" Int disk_size = 100 + Int cpu = 2 + Int memory = 8 } command <<< date | tee DATE @@ -28,7 +30,8 @@ task resfinder { resfinder_organism="enterococcus faecalis" elif [[ "~{organism}" == *"Enterococcus"*"faecium"* ]]; then resfinder_organism="enterococcus faecium" - elif [[ "~{organism}" == *"Escherichia"*"coli"* ]]; then + # to allow for both E. coli and any Shigella species to be processed via PointFinder as E. coli + elif [[ "~{organism}" == *"Escherichia"*"coli"* ]] || [[ "~{organism}" == *"Shigella"* ]]; then resfinder_organism="escherichia coli" elif [[ "~{organism}" == *"Klebsiella"* ]]; then resfinder_organism="klebsiella" @@ -45,6 +48,7 @@ task resfinder { else echo "Either Gambit predicted taxon is not supported by resfinder or the user did not supply an organism as input." echo "Skipping the use of resfinder --species optional parameter." + echo "WARNING: This will disable PointFinder due to the requirement of --species flag." fi # if resfinder_organism variable is set, use --species flag, otherwise do not use --species flag @@ -55,52 +59,57 @@ task resfinder { --species "${resfinder_organism}" \ ~{true="--acquired" false="" acquired} \ ~{'--min_cov ' + min_cov} \ - ~{'--threshold ' + threshold} \ - ~{true="--point" false="" point} + ~{'--threshold ' + min_id} \ + ~{true="--point" false="" call_PointFinder} else + # pointfinder requires the use of the --species flag, so if resfinder_organism is not set, do not run pointfinder run_resfinder.py \ --inputfasta ~{assembly} \ --outputPath . \ --species "other" \ ~{true="--acquired" false="" acquired} \ ~{'--min_cov ' + min_cov} \ - ~{'--threshold ' + threshold} + ~{'--threshold ' + min_id} fi # replace space in resfinder_organism with underscore resfinder_organism="${resfinder_organism// /_}" # rename files - mv pheno_table.txt ~{samplename}_pheno_table.txt - if [ -f pheno_table_${resfinder_organism}.txt ]; then - mv pheno_table_${resfinder_organism}.txt ~{samplename}_pheno_table_species.txt + mv -v pheno_table.txt ~{samplename}_pheno_table.tsv + if [ -f "pheno_table_${resfinder_organism}.txt" ]; then + # rename file to have proper extension & samplename included + mv -v "pheno_table_${resfinder_organism}.txt" ~{samplename}_pheno_table_species.tsv fi - mv ResFinder_Hit_in_genome_seq.fsa ~{samplename}_ResFinder_Hit_in_genome_seq.fsa - mv ResFinder_Resistance_gene_seq.fsa ~{samplename}_ResFinder_Resistance_gene_seq.fsa - mv ResFinder_results_tab.txt ~{samplename}_ResFinder_results_tab.txt + mv -v ResFinder_Hit_in_genome_seq.fsa ~{samplename}_ResFinder_Hit_in_genome_seq.fsa + mv -v ResFinder_Resistance_gene_seq.fsa ~{samplename}_ResFinder_Resistance_gene_seq.fsa + mv -v ResFinder_results_tab.txt ~{samplename}_ResFinder_results_tab.tsv + + # if pointfinder was run, rename files if [ -f PointFinder_prediction.txt ]; then - mv PointFinder_prediction.txt ~{samplename}_PointFinder_prediction.txt - mv PointFinder_results.txt ~{samplename}_PointFinder_results.txt + mv -v PointFinder_prediction.txt ~{samplename}_PointFinder_prediction.tsv + mv -v PointFinder_results.txt ~{samplename}_PointFinder_results.tsv fi >>> output { - File resfinder_pheno_table = "~{samplename}_pheno_table.txt" - File? resfinder_pheno_table_species = "~{samplename}_pheno_table_species.txt" + File resfinder_pheno_table = "~{samplename}_pheno_table.tsv" + File? resfinder_pheno_table_species = "~{samplename}_pheno_table_species.tsv" File resfinder_hit_in_genome_seq = "~{samplename}_ResFinder_Hit_in_genome_seq.fsa" File resfinder_resistance_gene_seq = "~{samplename}_ResFinder_Resistance_gene_seq.fsa" - File resfinder_results_tab = "~{samplename}_ResFinder_results_tab.txt" - File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.txt" - File? pointfinder_results = "~{samplename}_PointFinder_results.txt" + File resfinder_results_tab = "~{samplename}_ResFinder_results_tab.tsv" + File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.tsv" + File? pointfinder_results = "~{samplename}_PointFinder_results.tsv" String resfinder_docker = "~{docker}" String resfinder_version = read_string("RESFINDER_VERSION") String resfinder_db_version = read_string("RESFINDER_DB_VERSION") } runtime { - memory: "8 GB" - cpu: 4 + memory: "~{memory} GB" + cpu: cpu docker: docker disks: "local-disk " + disk_size + " SSD" disk: disk_size + " GB" - maxRetries: 3 } + maxRetries: 3 + } } From 0561a4355d78234de2f2e10ff6a6dcb1427acce4 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Wed, 23 Aug 2023 09:57:43 -0400 Subject: [PATCH 04/32] update CI --- tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml | 2 +- tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index 5fa38e056..532fdff42 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml @@ -560,7 +560,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 18d0dd6560f88ed2541ad342e12412e8 + md5sum: 3ec9414a79c4067078fdff600e4c75fd - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml index dcb4661b5..37be4cb32 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml @@ -530,7 +530,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 18d0dd6560f88ed2541ad342e12412e8 + md5sum: 3ec9414a79c4067078fdff600e4c75fd - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl From f7f187b24ce00bed08ef66c8cb5c12b29daa533a Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Tue, 19 Sep 2023 10:46:47 -0400 Subject: [PATCH 05/32] added required string output for resfinder: resfinder_predicted_pheno_resistance which is semicolon delimited output of ": " --- tasks/gene_typing/task_resfinder.wdl | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index 37e62f064..f56a07cf6 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -91,6 +91,17 @@ task resfinder { mv -v PointFinder_results.txt ~{samplename}_PointFinder_results.tsv fi + # parse ~{samplename}_pheno_table.tsv for predicted phenotypes and genes associated + # strip off 18 lines from top of file (18th line is the header with the columns: antimicrobial, class, WGS-predicted phenotype, Match, Genetic Background) + tail +18 ~{samplename}_pheno_table.tsv > ~{samplename}_pheno_table.headerless.tsv + + # convert all letters in first column (antibiotic) to uppercase. For readability of output string + awk -F '\t' 'BEGIN{OFS="\t"} { $1=toupper($1) } 1' ~{samplename}_pheno_table.headerless.tsv > ~{samplename}_pheno_table.headerless.uppercase.tsv + + # if column 3 shows 'Resistant', then print list of drugs followed by the genes/point mutations responsible + awk -F '\t' 'BEGIN{OFS=":"; ORS="; "} { if($3 == "Resistant") {print $1,$5}}' ~{samplename}_pheno_table.headerless.uppercase.tsv \ + | sed 's/..$//' > RESFINDER_PREDICTED_PHENO_RESISTANCE.txt + >>> output { File resfinder_pheno_table = "~{samplename}_pheno_table.tsv" @@ -100,6 +111,7 @@ task resfinder { File resfinder_results_tab = "~{samplename}_ResFinder_results_tab.tsv" File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.tsv" File? pointfinder_results = "~{samplename}_PointFinder_results.tsv" + String resfinder_predicted_pheno_resistance = read_string("RESFINDER_PREDICTED_PHENO_RESISTANCE.txt") String resfinder_docker = "~{docker}" String resfinder_version = read_string("RESFINDER_VERSION") String resfinder_db_version = read_string("RESFINDER_DB_VERSION") From b142ce511c767d493d880f68dfb2eb34fd237fec Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Tue, 19 Sep 2023 12:40:52 -0400 Subject: [PATCH 06/32] added required output String for resfinder task "resfinder_predicted_xdr_shigella" which checks for predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, fulfamethozazole, and ampicillin --- tasks/gene_typing/task_resfinder.wdl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index f56a07cf6..f701d705a 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -102,6 +102,25 @@ task resfinder { awk -F '\t' 'BEGIN{OFS=":"; ORS="; "} { if($3 == "Resistant") {print $1,$5}}' ~{samplename}_pheno_table.headerless.uppercase.tsv \ | sed 's/..$//' > RESFINDER_PREDICTED_PHENO_RESISTANCE.txt + # check for XDR Shigella status, based on CDC definition here: https://emergency.cdc.gov/han/2023/han00486.asp + # requirements: + # organism input (i.e. gambit_predicted_taxon) must contain "Shigella" + # predicted resistance to antimicrobials must include ALL: "ceftriaxone", "azithromycin", "ciprofloxacin", "trimethoprim", "sulfamethoxazole", and "ampicillin" + if [[ "~{organism}" == *"Shigella"* ]] && \ + grep -qi "ceftriaxone" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "azithromycin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "ciprofloxacin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "trimethoprim" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "ampicillin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "XDR Shigella based on predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" + echo "XDR Shigella based on predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + else + echo "Not predicted as XDR Shigella" + echo "Not predicted as XDR Shigella" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + fi + + >>> output { File resfinder_pheno_table = "~{samplename}_pheno_table.tsv" @@ -112,6 +131,7 @@ task resfinder { File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.tsv" File? pointfinder_results = "~{samplename}_PointFinder_results.tsv" String resfinder_predicted_pheno_resistance = read_string("RESFINDER_PREDICTED_PHENO_RESISTANCE.txt") + String resfinder_predicted_xdr_shigella = read_string("RESFINDER_PREDICTED_XDR_SHIGELLA.txt") String resfinder_docker = "~{docker}" String resfinder_version = read_string("RESFINDER_VERSION") String resfinder_db_version = read_string("RESFINDER_DB_VERSION") From 7c7e58ef9d10c1f6c13c18699a75c66c67fd4a00 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Tue, 19 Sep 2023 12:42:41 -0400 Subject: [PATCH 07/32] added 2 new resfinder string outputs to theiaprok_illumina_pe outputs --- workflows/theiaprok/wf_theiaprok_illumina_pe.wdl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl index e960a7eb1..2fa51347a 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl @@ -625,6 +625,8 @@ workflow theiaprok_illumina_pe { File? resfinder_results = resfinder_task.resfinder_results_tab File? resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table File? resfinder_pointfinder_results = resfinder_task.pointfinder_results + String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing From 3da258cf1d5607b39a250cf4bb31d90d7b72ccd7 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Tue, 19 Sep 2023 15:31:53 -0400 Subject: [PATCH 08/32] added 2 new resfinder string outputs to theiaprok_illumina_pe workflow as well as export_taxon_tables task --- tasks/utilities/task_broad_terra_tools.wdl | 4 ++++ workflows/theiaprok/wf_theiaprok_illumina_pe.wdl | 2 ++ 2 files changed, 6 insertions(+) diff --git a/tasks/utilities/task_broad_terra_tools.wdl b/tasks/utilities/task_broad_terra_tools.wdl index b585d73f2..bd2030088 100644 --- a/tasks/utilities/task_broad_terra_tools.wdl +++ b/tasks/utilities/task_broad_terra_tools.wdl @@ -110,6 +110,8 @@ task export_taxon_tables { File? resfinder_results File? resfinder_pointfinder_pheno_table File? resfinder_pointfinder_results + String? resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella String? resfinder_db_version String? resfinder_docker File? ts_mlst_results @@ -593,6 +595,8 @@ task export_taxon_tables { "resfinder_results": "~{resfinder_results}", "resfinder_pointfinder_pheno_table": "~{resfinder_pointfinder_pheno_table}", "resfinder_pointfinder_results": "~{resfinder_pointfinder_results}", + "resfinder_predicted_pheno_resistance": "~{resfinder_predicted_pheno_resistance}", + "resfinder_predicted_xdr_shigella": "~{resfinder_predicted_xdr_shigella}", "resfinder_db_version": "~{resfinder_db_version}", "resfinder_docker": "~{resfinder_docker}", "prokka_gff": "~{prokka_gff}", diff --git a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl index 2fa51347a..8eb202b43 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl @@ -309,6 +309,8 @@ workflow theiaprok_illumina_pe { resfinder_results = resfinder_task.resfinder_results_tab, resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table, resfinder_pointfinder_results = resfinder_task.pointfinder_results, + resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, + resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, From ccafc05f81f7bf1ad22083253e38bb4fc883d59c Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Wed, 20 Sep 2023 10:06:23 -0400 Subject: [PATCH 09/32] added 2 new resfinder string outputs to TheiaProk workflows (FASTA, SE, ONT). also added to export_taxon_tables inputs. renamed call block alias for resfinder in theiaprok_ONT to match other workflows --- workflows/theiaprok/wf_theiaprok_fasta.wdl | 4 ++ .../theiaprok/wf_theiaprok_illumina_se.wdl | 4 ++ workflows/theiaprok/wf_theiaprok_ont.wdl | 38 ++++++++++--------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/workflows/theiaprok/wf_theiaprok_fasta.wdl b/workflows/theiaprok/wf_theiaprok_fasta.wdl index cf4f7df7b..ca9990115 100644 --- a/workflows/theiaprok/wf_theiaprok_fasta.wdl +++ b/workflows/theiaprok/wf_theiaprok_fasta.wdl @@ -184,6 +184,8 @@ workflow theiaprok_fasta { resfinder_results = resfinder_task.resfinder_results_tab, resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table, resfinder_pointfinder_results = resfinder_task.pointfinder_results, + resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, + resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, @@ -431,6 +433,8 @@ workflow theiaprok_fasta { File? resfinder_results = resfinder_task.resfinder_results_tab File? resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table File? resfinder_pointfinder_results = resfinder_task.pointfinder_results + String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing diff --git a/workflows/theiaprok/wf_theiaprok_illumina_se.wdl b/workflows/theiaprok/wf_theiaprok_illumina_se.wdl index 4f2025bd6..d1d016187 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_se.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_se.wdl @@ -282,6 +282,8 @@ workflow theiaprok_illumina_se { resfinder_results = resfinder_task.resfinder_results_tab, resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table, resfinder_pointfinder_results = resfinder_task.pointfinder_results, + resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, + resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, @@ -577,6 +579,8 @@ workflow theiaprok_illumina_se { File? resfinder_results = resfinder_task.resfinder_results_tab File? resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table File? resfinder_pointfinder_results = resfinder_task.pointfinder_results + String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing diff --git a/workflows/theiaprok/wf_theiaprok_ont.wdl b/workflows/theiaprok/wf_theiaprok_ont.wdl index 06628be0a..9b99e1b21 100644 --- a/workflows/theiaprok/wf_theiaprok_ont.wdl +++ b/workflows/theiaprok/wf_theiaprok_ont.wdl @@ -138,7 +138,7 @@ workflow theiaprok_ont { organism = select_first([expected_taxon, gambit.gambit_predicted_taxon]) } if (call_resfinder) { - call resfinder_task.resfinder { + call resfinder_task.resfinder as resfinder_task { input: assembly = dragonflye.assembly_fasta, samplename = samplename, @@ -274,14 +274,16 @@ workflow theiaprok_ont { amrfinderplus_amr_subclasses = amrfinderplus.amrfinderplus_amr_subclasses, amrfinderplus_version = amrfinderplus.amrfinderplus_version, amrfinderplus_db_version = amrfinderplus.amrfinderplus_db_version, - resfinder_pheno_table = resfinder.resfinder_pheno_table, - resfinder_pheno_table_species = resfinder.resfinder_pheno_table_species, - resfinder_seqs = resfinder.resfinder_hit_in_genome_seq, - resfinder_results = resfinder.resfinder_results_tab, - resfinder_pointfinder_pheno_table = resfinder.pointfinder_pheno_table, - resfinder_pointfinder_results = resfinder.pointfinder_results, - resfinder_db_version = resfinder.resfinder_db_version, - resfinder_docker = resfinder.resfinder_docker, + resfinder_pheno_table = resfinder_task.resfinder_pheno_table, + resfinder_pheno_table_species = resfinder_task.resfinder_pheno_table_species, + resfinder_seqs = resfinder_task.resfinder_hit_in_genome_seq, + resfinder_results = resfinder_task.resfinder_results_tab, + resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table, + resfinder_pointfinder_results = resfinder_task.pointfinder_results, + resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, + resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, + resfinder_db_version = resfinder_task.resfinder_db_version, + resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, ts_mlst_predicted_st = ts_mlst.ts_mlst_predicted_st, ts_mlst_pubmlst_scheme = ts_mlst.ts_mlst_pubmlst_scheme, @@ -545,14 +547,16 @@ workflow theiaprok_ont { String? amrfinderplus_version = amrfinderplus.amrfinderplus_version String? amrfinderplus_db_version = amrfinderplus.amrfinderplus_db_version # Resfinder Outputs - File? resfinder_pheno_table = resfinder.resfinder_pheno_table - File? resfinder_pheno_table_species = resfinder.resfinder_pheno_table_species - File? resfinder_seqs = resfinder.resfinder_hit_in_genome_seq - File? resfinder_results = resfinder.resfinder_results_tab - File? resfinder_pointfinder_pheno_table = resfinder.pointfinder_pheno_table - File? resfinder_pointfinder_results = resfinder.pointfinder_results - String? resfinder_db_version = resfinder.resfinder_db_version - String? resfinder_docker = resfinder.resfinder_docker + File? resfinder_pheno_table = resfinder_task.resfinder_pheno_table + File? resfinder_pheno_table_species = resfinder_task.resfinder_pheno_table_species + File? resfinder_seqs = resfinder_task.resfinder_hit_in_genome_seq + File? resfinder_results = resfinder_task.resfinder_results_tab + File? resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table + File? resfinder_pointfinder_results = resfinder_task.pointfinder_results + String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella + String? resfinder_db_version = resfinder_task.resfinder_db_version + String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing File? ts_mlst_results = ts_mlst.ts_mlst_results String? ts_mlst_predicted_st = ts_mlst.ts_mlst_predicted_st From ad2871e21653c06387e62452e3a09194c2beb73c Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Fri, 11 Aug 2023 12:12:58 -0400 Subject: [PATCH 10/32] lots of changes to ResFinder task. Added support for Shigella species to be run through E.coli pointfinder database, changed output file extensions for TSVs, exposed cpu and memory optional inputs, changed name of 2 input params to be more recognizeable --- tasks/gene_typing/task_resfinder.wdl | 53 ++++++++++++++++------------ 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index 500711e85..37e62f064 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -7,10 +7,12 @@ task resfinder { String? organism # Species in the sample, species should be entered with their full scientific names (e.g. "escherichia coli"), using quotation marks Boolean acquired = true # Run resfinder for acquired resistance genes Float min_cov = 0.6 # Minimum (breadth-of) coverage of ResFinder - Float threshold = 0.9 # Threshold for identity of ResFinder - Boolean point = false # Run pointfinder for chromosomal mutations + Float min_id = 0.9 # Threshold for identity of ResFinder + Boolean call_PointFinder = false # Run pointfinder for chromosomal mutations String docker = "us-docker.pkg.dev/general-theiagen/staphb/resfinder:4.1.11" Int disk_size = 100 + Int cpu = 2 + Int memory = 8 } command <<< date | tee DATE @@ -28,7 +30,8 @@ task resfinder { resfinder_organism="enterococcus faecalis" elif [[ "~{organism}" == *"Enterococcus"*"faecium"* ]]; then resfinder_organism="enterococcus faecium" - elif [[ "~{organism}" == *"Escherichia"*"coli"* ]]; then + # to allow for both E. coli and any Shigella species to be processed via PointFinder as E. coli + elif [[ "~{organism}" == *"Escherichia"*"coli"* ]] || [[ "~{organism}" == *"Shigella"* ]]; then resfinder_organism="escherichia coli" elif [[ "~{organism}" == *"Klebsiella"* ]]; then resfinder_organism="klebsiella" @@ -45,6 +48,7 @@ task resfinder { else echo "Either Gambit predicted taxon is not supported by resfinder or the user did not supply an organism as input." echo "Skipping the use of resfinder --species optional parameter." + echo "WARNING: This will disable PointFinder due to the requirement of --species flag." fi # if resfinder_organism variable is set, use --species flag, otherwise do not use --species flag @@ -55,52 +59,57 @@ task resfinder { --species "${resfinder_organism}" \ ~{true="--acquired" false="" acquired} \ ~{'--min_cov ' + min_cov} \ - ~{'--threshold ' + threshold} \ - ~{true="--point" false="" point} + ~{'--threshold ' + min_id} \ + ~{true="--point" false="" call_PointFinder} else + # pointfinder requires the use of the --species flag, so if resfinder_organism is not set, do not run pointfinder run_resfinder.py \ --inputfasta ~{assembly} \ --outputPath . \ --species "other" \ ~{true="--acquired" false="" acquired} \ ~{'--min_cov ' + min_cov} \ - ~{'--threshold ' + threshold} + ~{'--threshold ' + min_id} fi # replace space in resfinder_organism with underscore resfinder_organism="${resfinder_organism// /_}" # rename files - mv pheno_table.txt ~{samplename}_pheno_table.txt - if [ -f pheno_table_${resfinder_organism}.txt ]; then - mv pheno_table_${resfinder_organism}.txt ~{samplename}_pheno_table_species.txt + mv -v pheno_table.txt ~{samplename}_pheno_table.tsv + if [ -f "pheno_table_${resfinder_organism}.txt" ]; then + # rename file to have proper extension & samplename included + mv -v "pheno_table_${resfinder_organism}.txt" ~{samplename}_pheno_table_species.tsv fi - mv ResFinder_Hit_in_genome_seq.fsa ~{samplename}_ResFinder_Hit_in_genome_seq.fsa - mv ResFinder_Resistance_gene_seq.fsa ~{samplename}_ResFinder_Resistance_gene_seq.fsa - mv ResFinder_results_tab.txt ~{samplename}_ResFinder_results_tab.txt + mv -v ResFinder_Hit_in_genome_seq.fsa ~{samplename}_ResFinder_Hit_in_genome_seq.fsa + mv -v ResFinder_Resistance_gene_seq.fsa ~{samplename}_ResFinder_Resistance_gene_seq.fsa + mv -v ResFinder_results_tab.txt ~{samplename}_ResFinder_results_tab.tsv + + # if pointfinder was run, rename files if [ -f PointFinder_prediction.txt ]; then - mv PointFinder_prediction.txt ~{samplename}_PointFinder_prediction.txt - mv PointFinder_results.txt ~{samplename}_PointFinder_results.txt + mv -v PointFinder_prediction.txt ~{samplename}_PointFinder_prediction.tsv + mv -v PointFinder_results.txt ~{samplename}_PointFinder_results.tsv fi >>> output { - File resfinder_pheno_table = "~{samplename}_pheno_table.txt" - File? resfinder_pheno_table_species = "~{samplename}_pheno_table_species.txt" + File resfinder_pheno_table = "~{samplename}_pheno_table.tsv" + File? resfinder_pheno_table_species = "~{samplename}_pheno_table_species.tsv" File resfinder_hit_in_genome_seq = "~{samplename}_ResFinder_Hit_in_genome_seq.fsa" File resfinder_resistance_gene_seq = "~{samplename}_ResFinder_Resistance_gene_seq.fsa" - File resfinder_results_tab = "~{samplename}_ResFinder_results_tab.txt" - File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.txt" - File? pointfinder_results = "~{samplename}_PointFinder_results.txt" + File resfinder_results_tab = "~{samplename}_ResFinder_results_tab.tsv" + File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.tsv" + File? pointfinder_results = "~{samplename}_PointFinder_results.tsv" String resfinder_docker = "~{docker}" String resfinder_version = read_string("RESFINDER_VERSION") String resfinder_db_version = read_string("RESFINDER_DB_VERSION") } runtime { - memory: "8 GB" - cpu: 4 + memory: "~{memory} GB" + cpu: cpu docker: docker disks: "local-disk " + disk_size + " SSD" disk: disk_size + " GB" - maxRetries: 3 } + maxRetries: 3 + } } From 54a013f254611e8b9143a136657be51acef6adba Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Wed, 23 Aug 2023 09:57:43 -0400 Subject: [PATCH 11/32] update CI --- tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml | 2 +- tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index 5f1ceac9b..7c8fc2940 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml @@ -560,7 +560,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 18d0dd6560f88ed2541ad342e12412e8 + md5sum: 3ec9414a79c4067078fdff600e4c75fd - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml index 92d8fbb40..c3e7f1bbb 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml @@ -530,7 +530,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 18d0dd6560f88ed2541ad342e12412e8 + md5sum: 3ec9414a79c4067078fdff600e4c75fd - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl From dc9f99957e747e6abb0b06479f9f42be77286b31 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Tue, 19 Sep 2023 10:46:47 -0400 Subject: [PATCH 12/32] added required string output for resfinder: resfinder_predicted_pheno_resistance which is semicolon delimited output of ": " --- tasks/gene_typing/task_resfinder.wdl | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index 37e62f064..f56a07cf6 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -91,6 +91,17 @@ task resfinder { mv -v PointFinder_results.txt ~{samplename}_PointFinder_results.tsv fi + # parse ~{samplename}_pheno_table.tsv for predicted phenotypes and genes associated + # strip off 18 lines from top of file (18th line is the header with the columns: antimicrobial, class, WGS-predicted phenotype, Match, Genetic Background) + tail +18 ~{samplename}_pheno_table.tsv > ~{samplename}_pheno_table.headerless.tsv + + # convert all letters in first column (antibiotic) to uppercase. For readability of output string + awk -F '\t' 'BEGIN{OFS="\t"} { $1=toupper($1) } 1' ~{samplename}_pheno_table.headerless.tsv > ~{samplename}_pheno_table.headerless.uppercase.tsv + + # if column 3 shows 'Resistant', then print list of drugs followed by the genes/point mutations responsible + awk -F '\t' 'BEGIN{OFS=":"; ORS="; "} { if($3 == "Resistant") {print $1,$5}}' ~{samplename}_pheno_table.headerless.uppercase.tsv \ + | sed 's/..$//' > RESFINDER_PREDICTED_PHENO_RESISTANCE.txt + >>> output { File resfinder_pheno_table = "~{samplename}_pheno_table.tsv" @@ -100,6 +111,7 @@ task resfinder { File resfinder_results_tab = "~{samplename}_ResFinder_results_tab.tsv" File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.tsv" File? pointfinder_results = "~{samplename}_PointFinder_results.tsv" + String resfinder_predicted_pheno_resistance = read_string("RESFINDER_PREDICTED_PHENO_RESISTANCE.txt") String resfinder_docker = "~{docker}" String resfinder_version = read_string("RESFINDER_VERSION") String resfinder_db_version = read_string("RESFINDER_DB_VERSION") From 965ef29ebee258f12b9501f5430214299d313b55 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Tue, 19 Sep 2023 12:40:52 -0400 Subject: [PATCH 13/32] added required output String for resfinder task "resfinder_predicted_xdr_shigella" which checks for predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, fulfamethozazole, and ampicillin --- tasks/gene_typing/task_resfinder.wdl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index f56a07cf6..f701d705a 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -102,6 +102,25 @@ task resfinder { awk -F '\t' 'BEGIN{OFS=":"; ORS="; "} { if($3 == "Resistant") {print $1,$5}}' ~{samplename}_pheno_table.headerless.uppercase.tsv \ | sed 's/..$//' > RESFINDER_PREDICTED_PHENO_RESISTANCE.txt + # check for XDR Shigella status, based on CDC definition here: https://emergency.cdc.gov/han/2023/han00486.asp + # requirements: + # organism input (i.e. gambit_predicted_taxon) must contain "Shigella" + # predicted resistance to antimicrobials must include ALL: "ceftriaxone", "azithromycin", "ciprofloxacin", "trimethoprim", "sulfamethoxazole", and "ampicillin" + if [[ "~{organism}" == *"Shigella"* ]] && \ + grep -qi "ceftriaxone" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "azithromycin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "ciprofloxacin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "trimethoprim" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "ampicillin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "XDR Shigella based on predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" + echo "XDR Shigella based on predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + else + echo "Not predicted as XDR Shigella" + echo "Not predicted as XDR Shigella" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + fi + + >>> output { File resfinder_pheno_table = "~{samplename}_pheno_table.tsv" @@ -112,6 +131,7 @@ task resfinder { File? pointfinder_pheno_table = "~{samplename}_PointFinder_prediction.tsv" File? pointfinder_results = "~{samplename}_PointFinder_results.tsv" String resfinder_predicted_pheno_resistance = read_string("RESFINDER_PREDICTED_PHENO_RESISTANCE.txt") + String resfinder_predicted_xdr_shigella = read_string("RESFINDER_PREDICTED_XDR_SHIGELLA.txt") String resfinder_docker = "~{docker}" String resfinder_version = read_string("RESFINDER_VERSION") String resfinder_db_version = read_string("RESFINDER_DB_VERSION") From d17db064453d7334deab719f2cc16fde81cb1b3b Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Tue, 19 Sep 2023 12:42:41 -0400 Subject: [PATCH 14/32] added 2 new resfinder string outputs to theiaprok_illumina_pe outputs --- workflows/theiaprok/wf_theiaprok_illumina_pe.wdl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl index e960a7eb1..2fa51347a 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl @@ -625,6 +625,8 @@ workflow theiaprok_illumina_pe { File? resfinder_results = resfinder_task.resfinder_results_tab File? resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table File? resfinder_pointfinder_results = resfinder_task.pointfinder_results + String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing From 32859d4074c03d9854fd123177af296c75f7cf36 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Tue, 19 Sep 2023 15:31:53 -0400 Subject: [PATCH 15/32] added 2 new resfinder string outputs to theiaprok_illumina_pe workflow as well as export_taxon_tables task --- tasks/utilities/task_broad_terra_tools.wdl | 4 ++++ workflows/theiaprok/wf_theiaprok_illumina_pe.wdl | 2 ++ 2 files changed, 6 insertions(+) diff --git a/tasks/utilities/task_broad_terra_tools.wdl b/tasks/utilities/task_broad_terra_tools.wdl index b585d73f2..bd2030088 100644 --- a/tasks/utilities/task_broad_terra_tools.wdl +++ b/tasks/utilities/task_broad_terra_tools.wdl @@ -110,6 +110,8 @@ task export_taxon_tables { File? resfinder_results File? resfinder_pointfinder_pheno_table File? resfinder_pointfinder_results + String? resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella String? resfinder_db_version String? resfinder_docker File? ts_mlst_results @@ -593,6 +595,8 @@ task export_taxon_tables { "resfinder_results": "~{resfinder_results}", "resfinder_pointfinder_pheno_table": "~{resfinder_pointfinder_pheno_table}", "resfinder_pointfinder_results": "~{resfinder_pointfinder_results}", + "resfinder_predicted_pheno_resistance": "~{resfinder_predicted_pheno_resistance}", + "resfinder_predicted_xdr_shigella": "~{resfinder_predicted_xdr_shigella}", "resfinder_db_version": "~{resfinder_db_version}", "resfinder_docker": "~{resfinder_docker}", "prokka_gff": "~{prokka_gff}", diff --git a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl index 2fa51347a..8eb202b43 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl @@ -309,6 +309,8 @@ workflow theiaprok_illumina_pe { resfinder_results = resfinder_task.resfinder_results_tab, resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table, resfinder_pointfinder_results = resfinder_task.pointfinder_results, + resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, + resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, From a2c727c214529db05a9fc6267e87b244899bcf24 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Wed, 20 Sep 2023 10:06:23 -0400 Subject: [PATCH 16/32] added 2 new resfinder string outputs to TheiaProk workflows (FASTA, SE, ONT). also added to export_taxon_tables inputs. renamed call block alias for resfinder in theiaprok_ONT to match other workflows --- workflows/theiaprok/wf_theiaprok_fasta.wdl | 4 ++ .../theiaprok/wf_theiaprok_illumina_se.wdl | 4 ++ workflows/theiaprok/wf_theiaprok_ont.wdl | 38 ++++++++++--------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/workflows/theiaprok/wf_theiaprok_fasta.wdl b/workflows/theiaprok/wf_theiaprok_fasta.wdl index cf4f7df7b..ca9990115 100644 --- a/workflows/theiaprok/wf_theiaprok_fasta.wdl +++ b/workflows/theiaprok/wf_theiaprok_fasta.wdl @@ -184,6 +184,8 @@ workflow theiaprok_fasta { resfinder_results = resfinder_task.resfinder_results_tab, resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table, resfinder_pointfinder_results = resfinder_task.pointfinder_results, + resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, + resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, @@ -431,6 +433,8 @@ workflow theiaprok_fasta { File? resfinder_results = resfinder_task.resfinder_results_tab File? resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table File? resfinder_pointfinder_results = resfinder_task.pointfinder_results + String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing diff --git a/workflows/theiaprok/wf_theiaprok_illumina_se.wdl b/workflows/theiaprok/wf_theiaprok_illumina_se.wdl index 4f2025bd6..d1d016187 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_se.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_se.wdl @@ -282,6 +282,8 @@ workflow theiaprok_illumina_se { resfinder_results = resfinder_task.resfinder_results_tab, resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table, resfinder_pointfinder_results = resfinder_task.pointfinder_results, + resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, + resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, @@ -577,6 +579,8 @@ workflow theiaprok_illumina_se { File? resfinder_results = resfinder_task.resfinder_results_tab File? resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table File? resfinder_pointfinder_results = resfinder_task.pointfinder_results + String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing diff --git a/workflows/theiaprok/wf_theiaprok_ont.wdl b/workflows/theiaprok/wf_theiaprok_ont.wdl index 6057ddce0..4a0732c61 100644 --- a/workflows/theiaprok/wf_theiaprok_ont.wdl +++ b/workflows/theiaprok/wf_theiaprok_ont.wdl @@ -138,7 +138,7 @@ workflow theiaprok_ont { organism = select_first([expected_taxon, gambit.gambit_predicted_taxon]) } if (call_resfinder) { - call resfinder_task.resfinder { + call resfinder_task.resfinder as resfinder_task { input: assembly = dragonflye.assembly_fasta, samplename = samplename, @@ -274,14 +274,16 @@ workflow theiaprok_ont { amrfinderplus_amr_subclasses = amrfinderplus.amrfinderplus_amr_subclasses, amrfinderplus_version = amrfinderplus.amrfinderplus_version, amrfinderplus_db_version = amrfinderplus.amrfinderplus_db_version, - resfinder_pheno_table = resfinder.resfinder_pheno_table, - resfinder_pheno_table_species = resfinder.resfinder_pheno_table_species, - resfinder_seqs = resfinder.resfinder_hit_in_genome_seq, - resfinder_results = resfinder.resfinder_results_tab, - resfinder_pointfinder_pheno_table = resfinder.pointfinder_pheno_table, - resfinder_pointfinder_results = resfinder.pointfinder_results, - resfinder_db_version = resfinder.resfinder_db_version, - resfinder_docker = resfinder.resfinder_docker, + resfinder_pheno_table = resfinder_task.resfinder_pheno_table, + resfinder_pheno_table_species = resfinder_task.resfinder_pheno_table_species, + resfinder_seqs = resfinder_task.resfinder_hit_in_genome_seq, + resfinder_results = resfinder_task.resfinder_results_tab, + resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table, + resfinder_pointfinder_results = resfinder_task.pointfinder_results, + resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, + resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, + resfinder_db_version = resfinder_task.resfinder_db_version, + resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, ts_mlst_predicted_st = ts_mlst.ts_mlst_predicted_st, ts_mlst_pubmlst_scheme = ts_mlst.ts_mlst_pubmlst_scheme, @@ -545,14 +547,16 @@ workflow theiaprok_ont { String? amrfinderplus_version = amrfinderplus.amrfinderplus_version String? amrfinderplus_db_version = amrfinderplus.amrfinderplus_db_version # Resfinder Outputs - File? resfinder_pheno_table = resfinder.resfinder_pheno_table - File? resfinder_pheno_table_species = resfinder.resfinder_pheno_table_species - File? resfinder_seqs = resfinder.resfinder_hit_in_genome_seq - File? resfinder_results = resfinder.resfinder_results_tab - File? resfinder_pointfinder_pheno_table = resfinder.pointfinder_pheno_table - File? resfinder_pointfinder_results = resfinder.pointfinder_results - String? resfinder_db_version = resfinder.resfinder_db_version - String? resfinder_docker = resfinder.resfinder_docker + File? resfinder_pheno_table = resfinder_task.resfinder_pheno_table + File? resfinder_pheno_table_species = resfinder_task.resfinder_pheno_table_species + File? resfinder_seqs = resfinder_task.resfinder_hit_in_genome_seq + File? resfinder_results = resfinder_task.resfinder_results_tab + File? resfinder_pointfinder_pheno_table = resfinder_task.pointfinder_pheno_table + File? resfinder_pointfinder_results = resfinder_task.pointfinder_results + String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance + String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella + String? resfinder_db_version = resfinder_task.resfinder_db_version + String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing File? ts_mlst_results = ts_mlst.ts_mlst_results String? ts_mlst_predicted_st = ts_mlst.ts_mlst_predicted_st From d588b87415598b0fd7c8c64d8bed89808fc42d4d Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Wed, 20 Sep 2023 15:58:51 -0400 Subject: [PATCH 17/32] typo in ceftriaxone --- tasks/gene_typing/task_resfinder.wdl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index f701d705a..d50faf870 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -113,8 +113,8 @@ task resfinder { grep -qi "trimethoprim" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ grep -qi "ampicillin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "XDR Shigella based on predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" - echo "XDR Shigella based on predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + echo "XDR Shigella based on predicted resistance to ceftriaxone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" + echo "XDR Shigella based on predicted resistance to ceftriaxone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt else echo "Not predicted as XDR Shigella" echo "Not predicted as XDR Shigella" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt From 20725322ff9f469a478886ab43772b3ef3bccd5a Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Mon, 16 Oct 2023 11:30:48 -0400 Subject: [PATCH 18/32] update CI --- tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml | 6 +++--- tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index 7c8fc2940..1d179a34e 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml @@ -560,7 +560,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 3ec9414a79c4067078fdff600e4c75fd + md5sum: 1789211a5428ac38dc336e271b393aa7 - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl @@ -632,9 +632,9 @@ - path: miniwdl_run/wdl/tasks/taxon_id/task_midas.wdl md5sum: 024971d1439dff7d59c0a26a824bd2c6 - path: miniwdl_run/wdl/tasks/utilities/task_broad_terra_tools.wdl - md5sum: 0236363c7f0694cd3f96416aa43e2f91 + md5sum: ada7f52ff16112a2cae2650b634dd7a2 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl - md5sum: a76d59109075ce8b861e63ffe70d7c77 + md5sum: a573e7f12058fa602b5a485df7b2c4bf - path: miniwdl_run/wdl/workflows/utilities/wf_merlin_magic.wdl md5sum: 53555c2f3e144e55f362080c5e75e434 - path: miniwdl_run/wdl/workflows/utilities/wf_read_QC_trim_pe.wdl diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml index c3e7f1bbb..ad089f805 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml @@ -530,7 +530,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 3ec9414a79c4067078fdff600e4c75fd + md5sum: 1789211a5428ac38dc336e271b393aa7 - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl @@ -600,9 +600,9 @@ - path: miniwdl_run/wdl/tasks/taxon_id/task_midas.wdl md5sum: 024971d1439dff7d59c0a26a824bd2c6 - path: miniwdl_run/wdl/tasks/utilities/task_broad_terra_tools.wdl - md5sum: 0236363c7f0694cd3f96416aa43e2f91 + md5sum: ada7f52ff16112a2cae2650b634dd7a2 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_se.wdl - md5sum: 858d33eb64b9bda618a47a999f370df5 + md5sum: b1ad1bb7b61096f52cabc2ba235097b4 - path: miniwdl_run/wdl/workflows/utilities/wf_merlin_magic.wdl md5sum: 53555c2f3e144e55f362080c5e75e434 - path: miniwdl_run/wdl/workflows/utilities/wf_read_QC_trim_se.wdl From 21e55d88cb4da7bc65ab1c7dd08d9988803c36fb Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Mon, 16 Oct 2023 12:33:06 -0400 Subject: [PATCH 19/32] update CI --- tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml | 4 ++-- tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index eff39068b..86d54906e 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml @@ -632,9 +632,9 @@ - path: miniwdl_run/wdl/tasks/taxon_id/task_midas.wdl md5sum: 024971d1439dff7d59c0a26a824bd2c6 - path: miniwdl_run/wdl/tasks/utilities/task_broad_terra_tools.wdl - md5sum: ada7f52ff16112a2cae2650b634dd7a2 + md5sum: 0ecb466a4eae3620a1276f66eaccdbe6 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl - md5sum: a573e7f12058fa602b5a485df7b2c4bf + md5sum: f0bf99aaec094c6267e3b02f3a22ec9b - path: miniwdl_run/wdl/workflows/utilities/wf_merlin_magic.wdl md5sum: 00bd2489b2a7aa5b88340a940961a857 - path: miniwdl_run/wdl/workflows/utilities/wf_read_QC_trim_pe.wdl diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml index 8918c7ffb..aec363e3f 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml @@ -592,7 +592,7 @@ - path: miniwdl_run/wdl/tasks/species_typing/task_ts_mlst.wdl md5sum: d49ae0b02e798af0636eb2721bb434b4 - path: miniwdl_run/wdl/tasks/task_versioning.wdl - md5sum: 9c02b95d23a602d9842fdeac883037b1 + md5sum: 3469cf6787f279ffa81fa50f6257fcd7 - path: miniwdl_run/wdl/tasks/taxon_id/task_gambit.wdl md5sum: 08987d952c67c6ff6debf6898af15f9a - path: miniwdl_run/wdl/tasks/taxon_id/task_kraken2.wdl @@ -600,9 +600,9 @@ - path: miniwdl_run/wdl/tasks/taxon_id/task_midas.wdl md5sum: 024971d1439dff7d59c0a26a824bd2c6 - path: miniwdl_run/wdl/tasks/utilities/task_broad_terra_tools.wdl - md5sum: ada7f52ff16112a2cae2650b634dd7a2 + md5sum: 0ecb466a4eae3620a1276f66eaccdbe6 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_se.wdl - md5sum: b1ad1bb7b61096f52cabc2ba235097b4 + md5sum: 29dc329f34f9b5f47a0e92734df16e42 - path: miniwdl_run/wdl/workflows/utilities/wf_merlin_magic.wdl md5sum: 00bd2489b2a7aa5b88340a940961a857 - path: miniwdl_run/wdl/workflows/utilities/wf_read_QC_trim_se.wdl From 96e09242a311e926b2ba47b734dea9c41bd3cd97 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Mon, 16 Oct 2023 12:49:45 -0400 Subject: [PATCH 20/32] update CI --- tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index 86d54906e..cdc310470 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml @@ -624,7 +624,7 @@ - path: miniwdl_run/wdl/tasks/species_typing/task_ts_mlst.wdl md5sum: d49ae0b02e798af0636eb2721bb434b4 - path: miniwdl_run/wdl/tasks/task_versioning.wdl - md5sum: 9c02b95d23a602d9842fdeac883037b1 + md5sum: 3469cf6787f279ffa81fa50f6257fcd7 - path: miniwdl_run/wdl/tasks/taxon_id/task_gambit.wdl md5sum: 08987d952c67c6ff6debf6898af15f9a - path: miniwdl_run/wdl/tasks/taxon_id/task_kraken2.wdl From efa4ae758e06e987b23c5c252726bab5aff03303 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Wed, 1 Nov 2023 10:26:10 -0400 Subject: [PATCH 21/32] resfinder default cov is 0.5 (50%) to match CDC standard; shortened XDR status output strings; added 6 new string outputs with predicted resistance to 6 drugs in XDR classification --- tasks/gene_typing/task_resfinder.wdl | 53 +++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index d50faf870..ae9feab85 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -6,7 +6,7 @@ task resfinder { String samplename String? organism # Species in the sample, species should be entered with their full scientific names (e.g. "escherichia coli"), using quotation marks Boolean acquired = true # Run resfinder for acquired resistance genes - Float min_cov = 0.6 # Minimum (breadth-of) coverage of ResFinder + Float min_cov = 0.5 # Minimum (breadth-of) coverage of ResFinder Float min_id = 0.9 # Threshold for identity of ResFinder Boolean call_PointFinder = false # Run pointfinder for chromosomal mutations String docker = "us-docker.pkg.dev/general-theiagen/staphb/resfinder:4.1.11" @@ -114,12 +114,51 @@ task resfinder { grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ grep -qi "ampicillin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then echo "XDR Shigella based on predicted resistance to ceftriaxone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" - echo "XDR Shigella based on predicted resistance to ceftriaxone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + echo "XDR" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt else - echo "Not predicted as XDR Shigella" - echo "Not predicted as XDR Shigella" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + echo "Not XDR" + echo "Not XDR" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt fi + # set output strings for Resistance or no Resistance predicted for each of 6 drugs + # if grep finds the drug in the RESFINDER_PREDICTED_PHENO_RESISTANCE.txt file, then set the output string to "R" + # if grep does not find the drug in the RESFINDER_PREDICTED_PHENO_RESISTANCE.txt file, then set the output string to "Not predicted" + # ampicillin + if grep -qi "ampicillin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "R" > RESFINDER_PREDICTED_RESISTANCE_AMP.txt + else + echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_AMP.txt + fi + # azithromycin + if grep -qi "azithromycin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "R" > RESFINDER_PREDICTED_RESISTANCE_AZM.txt + else + echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_AZM.txt + fi + # ceftriaxone + if grep -qi "ceftriaxone" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "R" > RESFINDER_PREDICTED_RESISTANCE_AXO.txt + else + echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_AXO.txt + fi + # ciprofloxacin + if grep -qi "ciprofloxacin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "R" > RESFINDER_PREDICTED_RESISTANCE_CIP.txt + else + echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_CIP.txt + fi + # sulfamethoxazole + if grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "R" > Resfinder_PREDICTED_RESISTANCE_SMX.txt + else + echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_SMX.txt + fi + # trimethoprim + if grep -qi "trimethoprim" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "R" > Resfinder_PREDICTED_RESISTANCE_TMP.txt + else + echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_TMP.txt + fi >>> output { @@ -132,6 +171,12 @@ task resfinder { File? pointfinder_results = "~{samplename}_PointFinder_results.tsv" String resfinder_predicted_pheno_resistance = read_string("RESFINDER_PREDICTED_PHENO_RESISTANCE.txt") String resfinder_predicted_xdr_shigella = read_string("RESFINDER_PREDICTED_XDR_SHIGELLA.txt") + String resfinder_predicted_resistance_Amp = read_string("RESFINDER_PREDICTED_RESISTANCE_AMP.txt") + String resfinder_predicted_resistance_Azm = read_string("RESFINDER_PREDICTED_RESISTANCE_AZM.txt") + String resfinder_predicted_resistance_Axo = read_string("RESFINDER_PREDICTED_RESISTANCE_AXO.txt") + String resfinder_predicted_resistance_Cip = read_string("RESFINDER_PREDICTED_RESISTANCE_CIP.txt") + String resfinder_predicted_resistance_Smx = read_string("Resfinder_PREDICTED_RESISTANCE_SMX.txt") + String resfinder_predicted_resistance_Tmp = read_string("Resfinder_PREDICTED_RESISTANCE_TMP.txt") String resfinder_docker = "~{docker}" String resfinder_version = read_string("RESFINDER_VERSION") String resfinder_db_version = read_string("RESFINDER_DB_VERSION") From a83919320eb87aa1b6f9f6ae3f51212ba11b620b Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Wed, 1 Nov 2023 11:28:18 -0400 Subject: [PATCH 22/32] added 6 new String outputs from resfinder to theiaprok ILMN PE wf. tested successfully w miniwdl --- workflows/theiaprok/wf_theiaprok_illumina_pe.wdl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl index 281196de9..d187b276d 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl @@ -652,6 +652,12 @@ workflow theiaprok_illumina_pe { File? resfinder_pointfinder_results = resfinder_task.pointfinder_results String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella + String? resfinder_predicted_resistance_Amp = resfinder_task.resfinder_predicted_resistance_Amp + String? resfinder_predicted_resistance_Azm = resfinder_task.resfinder_predicted_resistance_Azm + String? resfinder_predicted_resistance_Axo = resfinder_task.resfinder_predicted_resistance_Axo + String? resfinder_predicted_resistance_Cip = resfinder_task.resfinder_predicted_resistance_Cip + String? resfinder_predicted_resistance_Smx = resfinder_task.resfinder_predicted_resistance_Smx + String? resfinder_predicted_resistance_Tmp = resfinder_task.resfinder_predicted_resistance_Tmp String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing From c32d93f1f238ab968be6f41b1567f829f1053aed Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Wed, 1 Nov 2023 13:40:00 -0400 Subject: [PATCH 23/32] more specific wording for XDR Shigella classification output. Might have XDR non-Shigella samples (like E. coli) that would still be relevant to user --- tasks/gene_typing/task_resfinder.wdl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index ae9feab85..b2c9fbfd1 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -114,10 +114,10 @@ task resfinder { grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ grep -qi "ampicillin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then echo "XDR Shigella based on predicted resistance to ceftriaxone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" - echo "XDR" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + echo "XDR Shigella" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt else - echo "Not XDR" - echo "Not XDR" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + echo "Not XDR Shigella" + echo "Not XDR Shigella" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt fi # set output strings for Resistance or no Resistance predicted for each of 6 drugs From c70692259b3e5cbafefbfbb488cfe57715ab23de Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Thu, 2 Nov 2023 10:50:58 -0400 Subject: [PATCH 24/32] added logic to clarify the final XDR shigella designation output column. Either "Not Shigella..." or "XDR Shigella" or "Not XDR Shigella" --- tasks/gene_typing/task_resfinder.wdl | 49 ++++++++++++++++------------ 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index b2c9fbfd1..093502e3e 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -106,56 +106,63 @@ task resfinder { # requirements: # organism input (i.e. gambit_predicted_taxon) must contain "Shigella" # predicted resistance to antimicrobials must include ALL: "ceftriaxone", "azithromycin", "ciprofloxacin", "trimethoprim", "sulfamethoxazole", and "ampicillin" - if [[ "~{organism}" == *"Shigella"* ]] && \ - grep -qi "ceftriaxone" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ - grep -qi "azithromycin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ - grep -qi "ciprofloxacin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ - grep -qi "trimethoprim" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ - grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ - grep -qi "ampicillin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "XDR Shigella based on predicted resistance to ceftriaxone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" - echo "XDR Shigella" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt - else - echo "Not XDR Shigella" - echo "Not XDR Shigella" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + if [[ "~{organism}" != *"Shigella"* ]]; then + echo 'Either the input gambit_predicted_taxon does not contain "Shigella" or the user did not supply the organism as an input string to the workflow.' + echo "Skipping XDR Shigella check." + echo "Not Shigella based on gambit_predicted_taxon or user input" | tee RESFINDER_PREDICTED_XDR_SHIGELLA.txt + # if organism input string DOES contain the word "Shigella", check for resistance predictions to 6 drugs in XDR definition + elif [[ "~{organism}" == *"Shigella"* ]]; then + # nested if: if grep finds the all drugs, set output to XDR shigella, but if not, set it to "Not XDR Shigella" + if grep -qi "ceftriaxone" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "azithromycin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "ciprofloxacin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "trimethoprim" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt && \ + grep -qi "ampicillin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "XDR Shigella based on predicted resistance to ceftriaxone, azithromycin, ciprofloxacin, trimethoprim, sulfamethoxazole, and ampicillin. Please verify by reviewing ~{samplename}_pheno_table.tsv and ~{samplename}_ResFinder_results_tab.tsv" + echo "XDR Shigella" > RESFINDER_PREDICTED_XDR_SHIGELLA.txt + # ~{organism} does contain the word "Shigella", but one of the greps failed, meaning not all drug resistances' were predicted + else + echo "Not XDR Shigella" | tee RESFINDER_PREDICTED_XDR_SHIGELLA.txt + fi fi # set output strings for Resistance or no Resistance predicted for each of 6 drugs - # if grep finds the drug in the RESFINDER_PREDICTED_PHENO_RESISTANCE.txt file, then set the output string to "R" - # if grep does not find the drug in the RESFINDER_PREDICTED_PHENO_RESISTANCE.txt file, then set the output string to "Not predicted" + # if grep finds the drug in the RESFINDER_PREDICTED_PHENO_RESISTANCE.txt file, then set the output string to "Resistance" + # if grep does not find the drug in the RESFINDER_PREDICTED_PHENO_RESISTANCE.txt file, then set the output string to "No resistance predicted" # ampicillin if grep -qi "ampicillin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "R" > RESFINDER_PREDICTED_RESISTANCE_AMP.txt + echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_AMP.txt else - echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_AMP.txt + echo "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_AMP.txt fi # azithromycin if grep -qi "azithromycin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "R" > RESFINDER_PREDICTED_RESISTANCE_AZM.txt + echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_AZM.txt else echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_AZM.txt fi # ceftriaxone if grep -qi "ceftriaxone" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "R" > RESFINDER_PREDICTED_RESISTANCE_AXO.txt + echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_AXO.txt else echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_AXO.txt fi # ciprofloxacin if grep -qi "ciprofloxacin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "R" > RESFINDER_PREDICTED_RESISTANCE_CIP.txt + echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_CIP.txt else echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_CIP.txt fi # sulfamethoxazole if grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "R" > Resfinder_PREDICTED_RESISTANCE_SMX.txt + echo "Resistance" > Resfinder_PREDICTED_RESISTANCE_SMX.txt else echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_SMX.txt fi # trimethoprim if grep -qi "trimethoprim" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "R" > Resfinder_PREDICTED_RESISTANCE_TMP.txt + echo "Resistance" > Resfinder_PREDICTED_RESISTANCE_TMP.txt else echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_TMP.txt fi From dd6506d03ac65789a96e6b67b905f21d345c4c36 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Thu, 2 Nov 2023 11:10:40 -0400 Subject: [PATCH 25/32] updated output strings that I missed earlier --- tasks/gene_typing/task_resfinder.wdl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index 093502e3e..4612924d1 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -140,31 +140,31 @@ task resfinder { if grep -qi "azithromycin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_AZM.txt else - echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_AZM.txt + echo "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_AZM.txt fi # ceftriaxone if grep -qi "ceftriaxone" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_AXO.txt else - echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_AXO.txt + echo "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_AXO.txt fi # ciprofloxacin if grep -qi "ciprofloxacin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_CIP.txt else - echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_CIP.txt + echo "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_CIP.txt fi # sulfamethoxazole if grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then echo "Resistance" > Resfinder_PREDICTED_RESISTANCE_SMX.txt else - echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_SMX.txt + echo "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_SMX.txt fi # trimethoprim if grep -qi "trimethoprim" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then echo "Resistance" > Resfinder_PREDICTED_RESISTANCE_TMP.txt else - echo "Not predicted" > RESFINDER_PREDICTED_RESISTANCE_TMP.txt + echo "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_TMP.txt fi >>> From 2ec4c1c0e3eca981bc5d210413a00363afe803a8 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Thu, 16 Nov 2023 16:31:15 -0500 Subject: [PATCH 26/32] corrected typos with cases for 2 output filenames for string outputs --- tasks/gene_typing/task_resfinder.wdl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index 4612924d1..6de37355d 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -156,13 +156,13 @@ task resfinder { fi # sulfamethoxazole if grep -qi "sulfamethoxazole" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "Resistance" > Resfinder_PREDICTED_RESISTANCE_SMX.txt + echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_SMX.txt else echo "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_SMX.txt fi # trimethoprim if grep -qi "trimethoprim" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then - echo "Resistance" > Resfinder_PREDICTED_RESISTANCE_TMP.txt + echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_TMP.txt else echo "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_TMP.txt fi @@ -182,8 +182,8 @@ task resfinder { String resfinder_predicted_resistance_Azm = read_string("RESFINDER_PREDICTED_RESISTANCE_AZM.txt") String resfinder_predicted_resistance_Axo = read_string("RESFINDER_PREDICTED_RESISTANCE_AXO.txt") String resfinder_predicted_resistance_Cip = read_string("RESFINDER_PREDICTED_RESISTANCE_CIP.txt") - String resfinder_predicted_resistance_Smx = read_string("Resfinder_PREDICTED_RESISTANCE_SMX.txt") - String resfinder_predicted_resistance_Tmp = read_string("Resfinder_PREDICTED_RESISTANCE_TMP.txt") + String resfinder_predicted_resistance_Smx = read_string("RESFINDER_PREDICTED_RESISTANCE_SMX.txt") + String resfinder_predicted_resistance_Tmp = read_string("RESFINDER_PREDICTED_RESISTANCE_TMP.txt") String resfinder_docker = "~{docker}" String resfinder_version = read_string("RESFINDER_VERSION") String resfinder_db_version = read_string("RESFINDER_DB_VERSION") From bac999a8c732b76ec9a38e6dc56c9ef2c90370d3 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Mon, 20 Nov 2023 12:08:31 -0500 Subject: [PATCH 27/32] added 6 newer resfinder outputs to export_taxon_tables task and added same to export_taxon_tables task to input call block within theiaprok_illumina_pe workflow --- tasks/utilities/task_broad_terra_tools.wdl | 12 ++++++++++++ workflows/theiaprok/wf_theiaprok_illumina_pe.wdl | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/tasks/utilities/task_broad_terra_tools.wdl b/tasks/utilities/task_broad_terra_tools.wdl index c2c3b993e..b5689f066 100644 --- a/tasks/utilities/task_broad_terra_tools.wdl +++ b/tasks/utilities/task_broad_terra_tools.wdl @@ -118,6 +118,12 @@ task export_taxon_tables { File? resfinder_pointfinder_results String? resfinder_predicted_pheno_resistance String? resfinder_predicted_xdr_shigella + String? resfinder_predicted_resistance_Amp + String? resfinder_predicted_resistance_Azm + String? resfinder_predicted_resistance_Axo + String? resfinder_predicted_resistance_Cip + String? resfinder_predicted_resistance_Smx + String? resfinder_predicted_resistance_Tmp String? resfinder_db_version String? resfinder_docker File? ts_mlst_results @@ -611,6 +617,12 @@ task export_taxon_tables { "resfinder_pointfinder_results": "~{resfinder_pointfinder_results}", "resfinder_predicted_pheno_resistance": "~{resfinder_predicted_pheno_resistance}", "resfinder_predicted_xdr_shigella": "~{resfinder_predicted_xdr_shigella}", + "resfinder_predicted_resistance_Amp": "~{resfinder_predicted_resistance_Amp}", + "resfinder_predicted_resistance_Azm": "~{resfinder_predicted_resistance_Azm}", + "resfinder_predicted_resistance_Axo": "~{resfinder_predicted_resistance_Axo}", + "resfinder_predicted_resistance_Cip": "~{resfinder_predicted_resistance_Cip}", + "resfinder_predicted_resistance_Smx": "~{resfinder_predicted_resistance_Smx}", + "resfinder_predicted_resistance_Tmp": "~{resfinder_predicted_resistance_Tmp}", "resfinder_db_version": "~{resfinder_db_version}", "resfinder_docker": "~{resfinder_docker}", "prokka_gff": "~{prokka_gff}", diff --git a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl index d187b276d..5ffe23632 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl @@ -326,6 +326,12 @@ workflow theiaprok_illumina_pe { resfinder_pointfinder_results = resfinder_task.pointfinder_results, resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, + resfinder_predicted_resistance_Amp = resfinder_task.resfinder_predicted_resistance_Amp, + resfinder_predicted_resistance_Azm = resfinder_task.resfinder_predicted_resistance_Azm, + resfinder_predicted_resistance_Axo = resfinder_task.resfinder_predicted_resistance_Axo, + resfinder_predicted_resistance_Cip = resfinder_task.resfinder_predicted_resistance_Cip, + resfinder_predicted_resistance_Smx = resfinder_task.resfinder_predicted_resistance_Smx, + resfinder_predicted_resistance_Tmp = resfinder_task.resfinder_predicted_resistance_Tmp, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, From cc1d2eebd0d59fee422615f9672835790d5935a5 Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Mon, 20 Nov 2023 15:36:38 -0500 Subject: [PATCH 28/32] added additional resfinder outputs to theiaprok FASTA, ILMN SE, and ONT outputs. also added these inputs to export_taxon_tables call block --- workflows/theiaprok/wf_theiaprok_fasta.wdl | 12 ++++++++++++ workflows/theiaprok/wf_theiaprok_illumina_se.wdl | 12 ++++++++++++ workflows/theiaprok/wf_theiaprok_ont.wdl | 12 ++++++++++++ 3 files changed, 36 insertions(+) diff --git a/workflows/theiaprok/wf_theiaprok_fasta.wdl b/workflows/theiaprok/wf_theiaprok_fasta.wdl index 99f8b7efd..077c72ce0 100644 --- a/workflows/theiaprok/wf_theiaprok_fasta.wdl +++ b/workflows/theiaprok/wf_theiaprok_fasta.wdl @@ -201,6 +201,12 @@ workflow theiaprok_fasta { resfinder_pointfinder_results = resfinder_task.pointfinder_results, resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, + resfinder_predicted_resistance_Amp = resfinder_task.resfinder_predicted_resistance_Amp, + resfinder_predicted_resistance_Azm = resfinder_task.resfinder_predicted_resistance_Azm, + resfinder_predicted_resistance_Axo = resfinder_task.resfinder_predicted_resistance_Axo, + resfinder_predicted_resistance_Cip = resfinder_task.resfinder_predicted_resistance_Cip, + resfinder_predicted_resistance_Smx = resfinder_task.resfinder_predicted_resistance_Smx, + resfinder_predicted_resistance_Tmp = resfinder_task.resfinder_predicted_resistance_Tmp, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, @@ -458,6 +464,12 @@ workflow theiaprok_fasta { File? resfinder_pointfinder_results = resfinder_task.pointfinder_results String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella + String? resfinder_predicted_resistance_Amp = resfinder_task.resfinder_predicted_resistance_Amp + String? resfinder_predicted_resistance_Azm = resfinder_task.resfinder_predicted_resistance_Azm + String? resfinder_predicted_resistance_Axo = resfinder_task.resfinder_predicted_resistance_Axo + String? resfinder_predicted_resistance_Cip = resfinder_task.resfinder_predicted_resistance_Cip + String? resfinder_predicted_resistance_Smx = resfinder_task.resfinder_predicted_resistance_Smx + String? resfinder_predicted_resistance_Tmp = resfinder_task.resfinder_predicted_resistance_Tmp String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing diff --git a/workflows/theiaprok/wf_theiaprok_illumina_se.wdl b/workflows/theiaprok/wf_theiaprok_illumina_se.wdl index d8cf7178a..06e584921 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_se.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_se.wdl @@ -299,6 +299,12 @@ workflow theiaprok_illumina_se { resfinder_pointfinder_results = resfinder_task.pointfinder_results, resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, + resfinder_predicted_resistance_Amp = resfinder_task.resfinder_predicted_resistance_Amp, + resfinder_predicted_resistance_Azm = resfinder_task.resfinder_predicted_resistance_Azm, + resfinder_predicted_resistance_Axo = resfinder_task.resfinder_predicted_resistance_Axo, + resfinder_predicted_resistance_Cip = resfinder_task.resfinder_predicted_resistance_Cip, + resfinder_predicted_resistance_Smx = resfinder_task.resfinder_predicted_resistance_Smx, + resfinder_predicted_resistance_Tmp = resfinder_task.resfinder_predicted_resistance_Tmp, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, @@ -604,6 +610,12 @@ workflow theiaprok_illumina_se { File? resfinder_pointfinder_results = resfinder_task.pointfinder_results String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella + String? resfinder_predicted_resistance_Amp = resfinder_task.resfinder_predicted_resistance_Amp + String? resfinder_predicted_resistance_Azm = resfinder_task.resfinder_predicted_resistance_Azm + String? resfinder_predicted_resistance_Axo = resfinder_task.resfinder_predicted_resistance_Axo + String? resfinder_predicted_resistance_Cip = resfinder_task.resfinder_predicted_resistance_Cip + String? resfinder_predicted_resistance_Smx = resfinder_task.resfinder_predicted_resistance_Smx + String? resfinder_predicted_resistance_Tmp = resfinder_task.resfinder_predicted_resistance_Tmp String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing diff --git a/workflows/theiaprok/wf_theiaprok_ont.wdl b/workflows/theiaprok/wf_theiaprok_ont.wdl index 16fc2344b..792df1a65 100644 --- a/workflows/theiaprok/wf_theiaprok_ont.wdl +++ b/workflows/theiaprok/wf_theiaprok_ont.wdl @@ -297,6 +297,12 @@ workflow theiaprok_ont { resfinder_pointfinder_results = resfinder_task.pointfinder_results, resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance, resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella, + resfinder_predicted_resistance_Amp = resfinder_task.resfinder_predicted_resistance_Amp, + resfinder_predicted_resistance_Azm = resfinder_task.resfinder_predicted_resistance_Azm, + resfinder_predicted_resistance_Axo = resfinder_task.resfinder_predicted_resistance_Axo, + resfinder_predicted_resistance_Cip = resfinder_task.resfinder_predicted_resistance_Cip, + resfinder_predicted_resistance_Smx = resfinder_task.resfinder_predicted_resistance_Smx, + resfinder_predicted_resistance_Tmp = resfinder_task.resfinder_predicted_resistance_Tmp, resfinder_db_version = resfinder_task.resfinder_db_version, resfinder_docker = resfinder_task.resfinder_docker, ts_mlst_results = ts_mlst.ts_mlst_results, @@ -578,6 +584,12 @@ workflow theiaprok_ont { File? resfinder_pointfinder_results = resfinder_task.pointfinder_results String? resfinder_predicted_pheno_resistance = resfinder_task.resfinder_predicted_pheno_resistance String? resfinder_predicted_xdr_shigella = resfinder_task.resfinder_predicted_xdr_shigella + String? resfinder_predicted_resistance_Amp = resfinder_task.resfinder_predicted_resistance_Amp + String? resfinder_predicted_resistance_Azm = resfinder_task.resfinder_predicted_resistance_Azm + String? resfinder_predicted_resistance_Axo = resfinder_task.resfinder_predicted_resistance_Axo + String? resfinder_predicted_resistance_Cip = resfinder_task.resfinder_predicted_resistance_Cip + String? resfinder_predicted_resistance_Smx = resfinder_task.resfinder_predicted_resistance_Smx + String? resfinder_predicted_resistance_Tmp = resfinder_task.resfinder_predicted_resistance_Tmp String? resfinder_db_version = resfinder_task.resfinder_db_version String? resfinder_docker = resfinder_task.resfinder_docker # MLST Typing From 0a3e2b72de38c826299b32bcd3d4e9b35af35bbf Mon Sep 17 00:00:00 2001 From: kapsakcj Date: Mon, 20 Nov 2023 16:34:10 -0500 Subject: [PATCH 29/32] update CI --- tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml | 6 +++--- tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index e314526f3..3b46900c6 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml @@ -560,7 +560,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 1789211a5428ac38dc336e271b393aa7 + md5sum: 58a827159bed3582fbd68a4a8e5b2593 - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl @@ -632,9 +632,9 @@ - path: miniwdl_run/wdl/tasks/taxon_id/task_midas.wdl md5sum: faacd87946ee3fbdf70f3a15b79ce547 - path: miniwdl_run/wdl/tasks/utilities/task_broad_terra_tools.wdl - md5sum: 0ecb466a4eae3620a1276f66eaccdbe6 + md5sum: bb23c0680845e5b74756a60832a80799 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl - md5sum: f0bf99aaec094c6267e3b02f3a22ec9b + md5sum: 5007720660fe5ce31d779e5b256f61a1 - path: miniwdl_run/wdl/workflows/utilities/wf_merlin_magic.wdl md5sum: 00bd2489b2a7aa5b88340a940961a857 - path: miniwdl_run/wdl/workflows/utilities/wf_read_QC_trim_pe.wdl diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml index ca62ad31d..fafd7baa1 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml @@ -528,7 +528,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 1789211a5428ac38dc336e271b393aa7 + md5sum: 58a827159bed3582fbd68a4a8e5b2593 - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl @@ -598,9 +598,9 @@ - path: miniwdl_run/wdl/tasks/taxon_id/task_midas.wdl md5sum: faacd87946ee3fbdf70f3a15b79ce547 - path: miniwdl_run/wdl/tasks/utilities/task_broad_terra_tools.wdl - md5sum: 0ecb466a4eae3620a1276f66eaccdbe6 + md5sum: bb23c0680845e5b74756a60832a80799 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_se.wdl - md5sum: 29dc329f34f9b5f47a0e92734df16e42 + md5sum: b960ac29c86bc317ea45af38802c3ec2 - path: miniwdl_run/wdl/workflows/utilities/wf_merlin_magic.wdl md5sum: 00bd2489b2a7aa5b88340a940961a857 - path: miniwdl_run/wdl/workflows/utilities/wf_read_QC_trim_se.wdl From b5902c252f989257680c7ce906223598a39d7cee Mon Sep 17 00:00:00 2001 From: Sage Wright Date: Mon, 4 Dec 2023 18:56:14 +0000 Subject: [PATCH 30/32] change case --- tasks/gene_typing/task_resfinder.wdl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index 6de37355d..b0d3825cf 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -8,7 +8,7 @@ task resfinder { Boolean acquired = true # Run resfinder for acquired resistance genes Float min_cov = 0.5 # Minimum (breadth-of) coverage of ResFinder Float min_id = 0.9 # Threshold for identity of ResFinder - Boolean call_PointFinder = false # Run pointfinder for chromosomal mutations + Boolean call_pointfinder = false # Run pointfinder for chromosomal mutations String docker = "us-docker.pkg.dev/general-theiagen/staphb/resfinder:4.1.11" Int disk_size = 100 Int cpu = 2 @@ -60,7 +60,7 @@ task resfinder { ~{true="--acquired" false="" acquired} \ ~{'--min_cov ' + min_cov} \ ~{'--threshold ' + min_id} \ - ~{true="--point" false="" call_PointFinder} + ~{true="--point" false="" call_pointfinder} else # pointfinder requires the use of the --species flag, so if resfinder_organism is not set, do not run pointfinder run_resfinder.py \ From b7cda3f34554083499b33d93d8b7b58786fcfbad Mon Sep 17 00:00:00 2001 From: Sage Wright Date: Tue, 5 Dec 2023 21:05:57 +0000 Subject: [PATCH 31/32] update md5sums --- tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml | 2 +- tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index 3b46900c6..7d3820cad 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml @@ -560,7 +560,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 58a827159bed3582fbd68a4a8e5b2593 + md5sum: 27528633723303b462d095b642649453 - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml index fafd7baa1..38b779017 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml @@ -528,7 +528,7 @@ - path: miniwdl_run/wdl/tasks/gene_typing/task_prokka.wdl md5sum: 8e8423b99d5cd3e92bb89b3c3211d432 - path: miniwdl_run/wdl/tasks/gene_typing/task_resfinder.wdl - md5sum: 58a827159bed3582fbd68a4a8e5b2593 + md5sum: 27528633723303b462d095b642649453 - path: miniwdl_run/wdl/tasks/gene_typing/task_snippy_variants.wdl md5sum: bc048390626650b6a939fd740c1aaf13 - path: miniwdl_run/wdl/tasks/quality_control/task_bbduk.wdl From ad5ffa5155e554b44cb0c93f03638015a16d6a91 Mon Sep 17 00:00:00 2001 From: Sage Wright Date: Tue, 5 Dec 2023 21:24:31 +0000 Subject: [PATCH 32/32] final md5sum update --- tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml | 4 ++-- tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index fcb658f53..8e74ad94a 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml @@ -632,9 +632,9 @@ - path: miniwdl_run/wdl/tasks/taxon_id/task_midas.wdl md5sum: faacd87946ee3fbdf70f3a15b79ce547 - path: miniwdl_run/wdl/tasks/utilities/task_broad_terra_tools.wdl - md5sum: bb23c0680845e5b74756a60832a80799 + md5sum: 5dc54b8446b6a430fc7375ae364908f0 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl - md5sum: 5007720660fe5ce31d779e5b256f61a1 + md5sum: 3acf4dcddbb44d547b69f597761cc048 - path: miniwdl_run/wdl/workflows/utilities/wf_merlin_magic.wdl md5sum: 00bd2489b2a7aa5b88340a940961a857 - path: miniwdl_run/wdl/workflows/utilities/wf_read_QC_trim_pe.wdl diff --git a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml index d07d99899..60742d42c 100644 --- a/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml +++ b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_se.yml @@ -598,9 +598,9 @@ - path: miniwdl_run/wdl/tasks/taxon_id/task_midas.wdl md5sum: faacd87946ee3fbdf70f3a15b79ce547 - path: miniwdl_run/wdl/tasks/utilities/task_broad_terra_tools.wdl - md5sum: bb23c0680845e5b74756a60832a80799 + md5sum: 5dc54b8446b6a430fc7375ae364908f0 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_se.wdl - md5sum: b960ac29c86bc317ea45af38802c3ec2 + md5sum: 3e19938fc8a624c7948b57867865561a - path: miniwdl_run/wdl/workflows/utilities/wf_merlin_magic.wdl md5sum: 00bd2489b2a7aa5b88340a940961a857 - path: miniwdl_run/wdl/workflows/utilities/wf_read_QC_trim_se.wdl