|
| 1 | +version 1.0 |
| 2 | + |
| 3 | +import "SVConcordance.wdl" as conc |
| 4 | +import "TasksMakeCohortVcf.wdl" as tasks_cohort |
| 5 | +import "Utils.wdl" as utils |
| 6 | + |
| 7 | +workflow SVConcordanceSimplePerSample { |
| 8 | + input { |
| 9 | + File eval_vcf |
| 10 | + File eval_vcf_idx |
| 11 | + File truth_vcf |
| 12 | + File truth_vcf_idx |
| 13 | + Array[String] sample_ids |
| 14 | + String output_prefix |
| 15 | + |
| 16 | + Float? pesr_interval_overlap = 0.5 |
| 17 | + Float? pesr_size_similarity = 0.0 |
| 18 | + Int? pesr_breakend_window = 500 |
| 19 | + |
| 20 | + Float? depth_interval_overlap = 0.8 |
| 21 | + Float? depth_size_similarity = 0.0 |
| 22 | + Int? depth_breakend_window = 10000000 |
| 23 | + |
| 24 | + Float? mixed_interval_overlap = 0.8 |
| 25 | + Float? mixed_size_similarity = 0.0 |
| 26 | + Int? mixed_breakend_window = 1000 |
| 27 | + |
| 28 | + File? clustering_config |
| 29 | + File? stratification_config |
| 30 | + Array[String]? track_names |
| 31 | + Array[File]? track_intervals |
| 32 | + |
| 33 | + File reference_dict |
| 34 | + |
| 35 | + String sv_base_mini_docker |
| 36 | + String gatk_docker |
| 37 | + |
| 38 | + RuntimeAttr? runtime_attr_sv_concordance |
| 39 | + RuntimeAttr? runtime_attr_sort_vcf |
| 40 | + } |
| 41 | + |
| 42 | + scatter (sample in sample_ids) { |
| 43 | + |
| 44 | + call utils.SubsetVcfToSample as SubsetEval { |
| 45 | + input: |
| 46 | + vcf = eval_vcf, |
| 47 | + vcf_idx = eval_vcf_idx, |
| 48 | + sample = sample, |
| 49 | + remove_sample = false, |
| 50 | + sv_base_mini_docker = sv_base_mini_docker |
| 51 | + } |
| 52 | +
|
| 53 | + call utils.SubsetVcfToSample as SubsetTruth { |
| 54 | + input: |
| 55 | + vcf = truth_vcf, |
| 56 | + vcf_idx = truth_vcf_idx, |
| 57 | + sample = sample, |
| 58 | + remove_sample = false, |
| 59 | + sv_base_mini_docker = sv_base_mini_docker |
| 60 | + } |
| 61 | +
|
| 62 | + call conc.SVConcordanceTask as Concordance { |
| 63 | + input: |
| 64 | + truth_vcf = SubsetTruth.vcf_subset, |
| 65 | + eval_vcf = SubsetEval.vcf_subset, |
| 66 | + output_prefix = "~{output_prefix}." ~{sample} ~".unsorted", |
| 67 | + additional_args = "--pesr-interval-overlap ~{pesr_interval_overlap} --pesr-size-similarity ~{pesr_size_similarity} --pesr-breakend-window ~{pesr_breakend_window} --depth-interval-overlap ~{depth_interval_overlap} --depth-size-similarity ~{depth_size_similarity} --depth-breakend-window ~{depth_breakend_window} --mixed-interval-overlap ~{mixed_interval_overlap} --mixed-size-similarity ~{mixed_size_similarity} --mixed-breakend-window ~{mixed_breakend_window}", |
| 68 | + clustering_config = clustering_config, |
| 69 | + stratification_config = stratification_config, |
| 70 | + track_names = track_names, |
| 71 | + track_intervals = track_intervals, |
| 72 | + reference_dict = reference_dict, |
| 73 | + gatk_docker = gatk_docker, |
| 74 | + runtime_attr_override = runtime_attr_sv_concordance |
| 75 | + } |
| 76 | + |
| 77 | + call tasks_cohort.SortVcf as Sort { |
| 78 | + input: |
| 79 | + vcf = Concordance.out_unsorted, |
| 80 | + outfile_prefix = "~{output_prefix}." ~{sample} ~".sorted", |
| 81 | + sv_base_mini_docker = sv_base_mini_docker, |
| 82 | + runtime_attr_override = runtime_attr_sort_vcf |
| 83 | + } |
| 84 | + } |
| 85 | + |
| 86 | + output { |
| 87 | + Array[File] conc_vcfs = Sort.out |
| 88 | + Array[File] conc_vcf_idxs = Sort.out_index |
| 89 | + } |
| 90 | +} |
0 commit comments