From d46c26e6884bf0b71789365c2dda242a6fe2ee70 Mon Sep 17 00:00:00 2001 From: Curtis Kapsak Date: Tue, 5 Dec 2023 16:34:51 -0500 Subject: [PATCH] Resfinder improvements, added support for Shigella spp., added XDR Shigella prediction (#159) * 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 * update CI * 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 * update CI * added required string output for resfinder: resfinder_predicted_pheno_resistance which is semicolon delimited output of ": " * added required output String for resfinder task "resfinder_predicted_xdr_shigella" which checks for predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, fulfamethozazole, and ampicillin * added 2 new resfinder string outputs to theiaprok_illumina_pe outputs * added 2 new resfinder string outputs to theiaprok_illumina_pe workflow as well as export_taxon_tables task * 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 * 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 * update CI * added required string output for resfinder: resfinder_predicted_pheno_resistance which is semicolon delimited output of ": " * added required output String for resfinder task "resfinder_predicted_xdr_shigella" which checks for predicted resistance to ceftriazone, azithromycin, ciprofloxacin, trimethoprim, fulfamethozazole, and ampicillin * added 2 new resfinder string outputs to theiaprok_illumina_pe outputs * added 2 new resfinder string outputs to theiaprok_illumina_pe workflow as well as export_taxon_tables task * 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 * typo in ceftriaxone * update CI * update CI * update CI * 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 * added 6 new String outputs from resfinder to theiaprok ILMN PE wf. tested successfully w miniwdl * more specific wording for XDR Shigella classification output. Might have XDR non-Shigella samples (like E. coli) that would still be relevant to user * added logic to clarify the final XDR shigella designation output column. Either "Not Shigella..." or "XDR Shigella" or "Not XDR Shigella" * updated output strings that I missed earlier * corrected typos with cases for 2 output filenames for string outputs * 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 * added additional resfinder outputs to theiaprok FASTA, ILMN SE, and ONT outputs. also added these inputs to export_taxon_tables call block * update CI * change case * update md5sums * final md5sum update --------- Co-authored-by: Sage Wright --- tasks/gene_typing/task_resfinder.wdl | 139 +++++++++++++++--- tasks/utilities/task_broad_terra_tools.wdl | 16 ++ .../test_wf_theiaprok_illumina_pe.yml | 6 +- .../test_wf_theiaprok_illumina_se.yml | 6 +- workflows/theiaprok/wf_theiaprok_fasta.wdl | 16 ++ .../theiaprok/wf_theiaprok_illumina_pe.wdl | 16 ++ .../theiaprok/wf_theiaprok_illumina_se.wdl | 16 ++ workflows/theiaprok/wf_theiaprok_ont.wdl | 50 ++++--- 8 files changed, 219 insertions(+), 46 deletions(-) diff --git a/tasks/gene_typing/task_resfinder.wdl b/tasks/gene_typing/task_resfinder.wdl index 500711e85..b0d3825cf 100644 --- a/tasks/gene_typing/task_resfinder.wdl +++ b/tasks/gene_typing/task_resfinder.wdl @@ -6,11 +6,13 @@ 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 threshold = 0.9 # Threshold for identity of ResFinder - Boolean point = false # Run pointfinder for chromosomal mutations + 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" 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,141 @@ 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 + + # 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 + + # 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"* ]]; 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 "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 "Resistance" > RESFINDER_PREDICTED_RESISTANCE_AMP.txt + else + echo "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_AMP.txt + fi + # azithromycin + if grep -qi "azithromycin" RESFINDER_PREDICTED_PHENO_RESISTANCE.txt; then + echo "Resistance" > RESFINDER_PREDICTED_RESISTANCE_AZM.txt + else + 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 "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 "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 "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 "No resistance predicted" > RESFINDER_PREDICTED_RESISTANCE_TMP.txt 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_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") } 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 + } } diff --git a/tasks/utilities/task_broad_terra_tools.wdl b/tasks/utilities/task_broad_terra_tools.wdl index eb819b302..15bc7ff94 100644 --- a/tasks/utilities/task_broad_terra_tools.wdl +++ b/tasks/utilities/task_broad_terra_tools.wdl @@ -117,6 +117,14 @@ 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_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 @@ -609,6 +617,14 @@ 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_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/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml b/tests/workflows/theiaprok/test_wf_theiaprok_illumina_pe.yml index f113ac6bd..8e74ad94a 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: 27528633723303b462d095b642649453 - 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: 26ac9a20c8043a28d373bfe0ca361cc6 + md5sum: 5dc54b8446b6a430fc7375ae364908f0 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl - md5sum: ac4971ad992c3e8abee5d3817928a8f2 + 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 a46d0ea6b..60742d42c 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: 18d0dd6560f88ed2541ad342e12412e8 + 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 @@ -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: 26ac9a20c8043a28d373bfe0ca361cc6 + md5sum: 5dc54b8446b6a430fc7375ae364908f0 - path: miniwdl_run/wdl/workflows/theiaprok/wf_theiaprok_illumina_se.wdl - md5sum: 7303247badeb82119ccef528f7367f89 + 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 diff --git a/workflows/theiaprok/wf_theiaprok_fasta.wdl b/workflows/theiaprok/wf_theiaprok_fasta.wdl index c5fe43576..df088710c 100644 --- a/workflows/theiaprok/wf_theiaprok_fasta.wdl +++ b/workflows/theiaprok/wf_theiaprok_fasta.wdl @@ -200,6 +200,14 @@ 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_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, @@ -456,6 +464,14 @@ 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_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_pe.wdl b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl index 2d105442a..d545cb863 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_pe.wdl @@ -325,6 +325,14 @@ 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_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, @@ -650,6 +658,14 @@ 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_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 8ee18cd09..d29971ea0 100644 --- a/workflows/theiaprok/wf_theiaprok_illumina_se.wdl +++ b/workflows/theiaprok/wf_theiaprok_illumina_se.wdl @@ -298,6 +298,14 @@ 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_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, @@ -602,6 +610,14 @@ 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_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 049a2bd37..690d7715d 100644 --- a/workflows/theiaprok/wf_theiaprok_ont.wdl +++ b/workflows/theiaprok/wf_theiaprok_ont.wdl @@ -147,7 +147,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, @@ -290,14 +290,22 @@ 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_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, ts_mlst_predicted_st = ts_mlst.ts_mlst_predicted_st, ts_mlst_pubmlst_scheme = ts_mlst.ts_mlst_pubmlst_scheme, @@ -570,14 +578,22 @@ 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_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 File? ts_mlst_results = ts_mlst.ts_mlst_results String? ts_mlst_predicted_st = ts_mlst.ts_mlst_predicted_st