|
| 1 | +version 1.0 |
| 2 | + |
| 3 | +import "../../../tasks/Utility/PBUtils.wdl" |
| 4 | +import "../../../tasks/Utility/BAMutils.wdl" as BU |
| 5 | +import "../../../tasks/Utility/GeneralUtils.wdl" as GU |
| 6 | + |
| 7 | +import "../../../tasks/Utility/Finalize.wdl" as FF |
| 8 | + |
| 9 | +import "../../../tasks/Alignment/AlignAndCheckFingerprintCCS.wdl" as major |
| 10 | +import "../../../tasks/QC/AlignedMetrics.wdl" |
| 11 | + |
| 12 | +workflow ProcessOnInstrumentDemuxedChunk { |
| 13 | + |
| 14 | + meta { |
| 15 | + desciption: "!!! WARN: THIS IS PROJECT-CENTER SPECIFIC !!! Given an on-instrument demultiplexed hifi_reads.bam, perform alignment and QC check." |
| 16 | + } |
| 17 | + |
| 18 | + input { |
| 19 | + File uBAM |
| 20 | + File? uPBI |
| 21 | + |
| 22 | + String readgroup_id |
| 23 | + |
| 24 | + String bam_SM_field |
| 25 | + |
| 26 | + String fingerprint_store |
| 27 | + String sample_id_at_store |
| 28 | + Boolean turn_off_fingperprint_check = false |
| 29 | + |
| 30 | + File ref_map_file |
| 31 | + |
| 32 | + String gcs_out_root_dir |
| 33 | + } |
| 34 | + |
| 35 | + ################################################################################### |
| 36 | + # prep work |
| 37 | +
|
| 38 | + # where to store final results |
| 39 | + String workflow_name = "ProcessOnInstrumentDemuxedChunk" |
| 40 | + String outdir = sub(gcs_out_root_dir, "/$", "") + "/" + workflow_name |
| 41 | + |
| 42 | + ################################################################################### |
| 43 | + call BU.GetReadGroupInfo as RG {input: bam = uBAM, keys = ['SM', 'LB', 'PU']} |
| 44 | +
|
| 45 | + # major work |
| 46 | + call major.AlignAndCheckFingerprintCCS { |
| 47 | + input: |
| 48 | + uBAM = uBAM, |
| 49 | + uPBI = uPBI, |
| 50 | + bam_sample_name = bam_SM_field, |
| 51 | + library = RG.read_group_info['LB'], |
| 52 | +
|
| 53 | + turn_off_fingperprint_check = turn_off_fingperprint_check, |
| 54 | + fp_store = fingerprint_store, |
| 55 | + sample_id_at_store = sample_id_at_store, |
| 56 | + ref_map_file = ref_map_file |
| 57 | + } |
| 58 | +
|
| 59 | + ################################################################################### |
| 60 | + # finalize |
| 61 | + String movie_name = RG.read_group_info['PU'] |
| 62 | + String bc_specific_aln_out = outdir + '/alignments/' + readgroup_id |
| 63 | + String bc_specific_metric_out = outdir + "/metrics/" + readgroup_id |
| 64 | +
|
| 65 | + call FF.FinalizeToFile as FinalizeAlignedBam { input: outdir = bc_specific_aln_out, file = AlignAndCheckFingerprintCCS.aligned_bam, name = readgroup_id + '.bam' } |
| 66 | + call FF.FinalizeToFile as FinalizeAlignedBai { input: outdir = bc_specific_aln_out, file = AlignAndCheckFingerprintCCS.aligned_bai, name = readgroup_id + '.bai' } |
| 67 | + call FF.FinalizeToFile as FinalizeAlignedPbi { input: outdir = bc_specific_aln_out, file = AlignAndCheckFingerprintCCS.aligned_pbi, name = readgroup_id + '.pbi' } |
| 68 | +
|
| 69 | + call FF.FinalizeToFile as FinalizePerChrCov { input: outdir = bc_specific_metric_out, file = AlignAndCheckFingerprintCCS.coverage_per_chr } |
| 70 | +
|
| 71 | + call FF.FinalizeToFile as FinalizeAlnMetrics { input: outdir = bc_specific_metric_out, file = AlignAndCheckFingerprintCCS.alignment_metrics_tar_gz } |
| 72 | +
|
| 73 | + if (! turn_off_fingperprint_check) { |
| 74 | + call FF.FinalizeToFile as FinalizeFPDetails { input: outdir = bc_specific_metric_out, file = select_first([AlignAndCheckFingerprintCCS.fingerprint_detail_tar_gz]) } |
| 75 | + } |
| 76 | +
|
| 77 | + ################################################################################### |
| 78 | +
|
| 79 | + call GU.GetTodayDate as today {} |
| 80 | + |
| 81 | + output { |
| 82 | + File aligned_bam = FinalizeAlignedBam.gcs_path |
| 83 | + File aligned_bai = FinalizeAlignedBai.gcs_path |
| 84 | + File aligned_pbi = FinalizeAlignedPbi.gcs_path |
| 85 | + Float wgs_cov = AlignAndCheckFingerprintCCS.wgs_cov |
| 86 | + |
| 87 | + File coverage_per_chr = FinalizePerChrCov.gcs_path |
| 88 | + |
| 89 | + Map[String, Float] alignment_metrics = AlignAndCheckFingerprintCCS.alignment_metrics |
| 90 | + File alignment_metrics_tar_gz = FinalizeAlnMetrics.gcs_path |
| 91 | + |
| 92 | + String movie = movie_name |
| 93 | + |
| 94 | + String? fingerprint_check_result = AlignAndCheckFingerprintCCS.fp_status |
| 95 | + Float? fingerprint_check_LOD = AlignAndCheckFingerprintCCS.fp_lod_expected_sample |
| 96 | + File? fingerprint_check_tar_gz = FinalizeFPDetails.gcs_path |
| 97 | + |
| 98 | + String last_processing_date = today.yyyy_mm_dd |
| 99 | + } |
| 100 | +} |
0 commit comments