11version 1.0
22
3- import "../QC/FPCheckAoU.wdl" as FPCheck
4- import "../QC/CollectPacBioAlignedMetrics.wdl" as AlnMetrics
5- import "../Utility/PBUtils.wdl" as PB
6- import "../Utility/Utils.wdl"
7- import "../Utility/GeneralUtils.wdl"
3+ import "../tasks/Utility/PBUtils.wdl" as PB
4+ import "../tasks/Utility/Utils.wdl"
5+ import "../tasks/Utility/GeneralUtils.wdl"
6+ import "../tasks/Utility/BAMutils.wdl" as BU
7+
8+ import "CollectPacBioAlignedMetrics.wdl" as AlnMetrics
9+ import "../tasks/QC/AlignedMetrics.wdl" as GeAlnMetrics
10+ import "../tasks/QC/FPCheckAoU.wdl" as FPCheck
811
912workflow AlignAndCheckFingerprintCCS {
1013 meta {
@@ -13,10 +16,10 @@ workflow AlignAndCheckFingerprintCCS {
1316 }
1417
1518 input {
16- File uBAM
17- File uPBI
19+ File uBAM
20+ File ? uPBI
1821 String bam_sample_name
19- String library
22+ String ? library
2023
2124 Boolean turn_off_fingperprint_check
2225 String fp_store
@@ -40,6 +43,10 @@ workflow AlignAndCheckFingerprintCCS {
4043
4144 Map [String , String ] ref_map = read_map (ref_map_file )
4245
46+ call BU .GetReadGroupInfo as RG {input : bam = uBAM , keys = ['SM' , 'LB' , 'PU' ]}
47+ String LB = select_first ([library , RG .read_group_info ['LB' ]])
48+ String movie_name = RG .read_group_info ['PU' ]
49+
4350 ###################################################################################
4451 if (ceil (size (uBAM , "GB" )) > 50 ) {# shard & align, but practically never true
4552
@@ -52,10 +59,13 @@ workflow AlignAndCheckFingerprintCCS {
5259
5360 call Utils .ComputeAllowedLocalSSD as Guess {input : intended_gb = 3 *ceil (size (uBAM , "GB" ) + size (uPBI , "GB" ))}
5461 call Utils .RandomZoneSpewer as arbitrary {input : num_of_zones = 3 }
62+ if (! defined (uPBI ) ) {
63+ call PB .PBIndex as PBIndex {input : bam = uBAM }
64+ }
5565
5666 call PB .ShardLongReads {
5767 input :
58- unaligned_bam = uBAM , unaligned_pbi = uPBI ,
68+ unaligned_bam = uBAM , unaligned_pbi = select_first ([ uPBI , PBIndex . pbi ]) ,
5969 num_shards = 50 , num_ssds = Guess .numb_of_local_ssd , zones = arbitrary .zones
6070 }
6171
@@ -109,24 +119,37 @@ workflow AlignAndCheckFingerprintCCS {
109119 name = "alignment.metrics"
110120 }
111121
122+ call BU .SamtoolsFlagStats { input : bam = aBAM , output_format = 'JSON' }
123+ call BU .ParseFlagStatsJson { input : sam_flag_stats_json = SamtoolsFlagStats .flag_stats }
124+
112125 if (!turn_off_fingperprint_check ){
113126 call FPCheck .FPCheckAoU {
114127 input :
115128 aligned_bam = aBAM ,
116129 aligned_bai = aBAI ,
130+ tech = 'Sequel' , # making assumption that data to process here are all Sequel data (no critial impact though)
117131 fp_store = fp_store ,
118132 sample_id_at_store = sample_id_at_store ,
119133 ref_specific_haplotype_map = ref_map ['haplotype_map' ]
120134 }
121135 call GeneralUtils .TarGZFiles as saveFPRes {input : files = [FPCheckAoU .fingerprint_summary , FPCheckAoU .fingerprint_details ], name = 'fingerprint_check.summary_and_details' }
122136 }
123137
138+ call GeAlnMetrics .MosDepthWGS { input : bam = aBAM , bai = aBAI }
139+
124140 output {
125141 File aligned_bam = aBAM
126142 File aligned_bai = aBAI
127143 File aligned_pbi = IndexAlignedReads .pbi
128144
145+ String movie = movie_name
146+
147+ Float wgs_cov = MosDepthWGS .wgs_cov
148+ File coverage_per_chr = MosDepthWGS .summary_txt
149+
129150 File alignment_metrics_tar_gz = saveAlnMetrics .you_got_it
151+ Map [String , Float ] alignment_metrics = CollectPacBioAlignedMetrics .alignment_metrics
152+ Map [String , Float ] sam_flag_stats = ParseFlagStatsJson .qc_pass_reads_SAM_flag_stats
130153
131154 Float ? fp_lod_expected_sample = FPCheckAoU .lod_expected_sample
132155 String ? fp_status = FPCheckAoU .FP_status
0 commit comments