Skip to content

Commit c905a5a

Browse files
committed
Two new workflows:
handle (ref-indepedent, alignment) a single piece of on-instrument demultiplexed CCS bam
1 parent 9b78448 commit c905a5a

File tree

3 files changed

+162
-0
lines changed

3 files changed

+162
-0
lines changed

.dockstore.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ workflows:
8181
- name: PBMASIsoSeqDemultiplex
8282
subclass: wdl
8383
primaryDescriptorPath: /wdl/pipelines/PacBio/Utility/PBMASIsoSeqDemultiplex.wdl
84+
- name: ProcessOnInstrumentDemuxedChunkRefFree
85+
subclass: wdl
86+
primaryDescriptorPath: /wdl/pipelines/PacBio/Utility/ProcessOnInstrumentDemuxedChunkRefFree.wdl
87+
- name: ProcessOnInstrumentDemuxedChunk
88+
subclass: wdl
89+
primaryDescriptorPath: /wdl/pipelines/PacBio/Utility/ProcessOnInstrumentDemuxedChunk.wdl
8490

8591
###################################################
8692
# TechAgnostic
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
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+
21+
String readgroup_id
22+
23+
String bam_SM_field
24+
25+
String fingerprint_store
26+
String sample_id_at_store
27+
Boolean turn_off_fingperprint_check = false
28+
29+
File ref_map_file
30+
31+
String gcs_out_root_dir
32+
}
33+
34+
###################################################################################
35+
# prep work
36+
37+
# where to store final results
38+
String workflow_name = "ProcessOnInstrumentDemuxedChunk"
39+
String outdir = sub(gcs_out_root_dir, "/$", "") + "/" + workflow_name
40+
41+
###################################################################################
42+
# generate PBI
43+
call PBUtils.PBIndex as Index {input: bam = uBAM}
44+
call BU.GetReadGroupInfo as RG {input: bam = uBAM, keys = ['SM', 'LB', 'PU']}
45+
46+
# major work
47+
call major.AlignAndCheckFingerprintCCS {
48+
input:
49+
uBAM = uBAM,
50+
uPBI = Index.pbi,
51+
bam_sample_name = bam_SM_field,
52+
library = RG.read_group_info['LB'],
53+
54+
turn_off_fingperprint_check = turn_off_fingperprint_check,
55+
fp_store = fingerprint_store,
56+
sample_id_at_store = sample_id_at_store,
57+
ref_map_file = ref_map_file
58+
}
59+
60+
call AlignedMetrics.MosDepthWGS { input: bam = AlignAndCheckFingerprintCCS.aligned_bam, bai = AlignAndCheckFingerprintCCS.aligned_bai}
61+
###################################################################################
62+
# finalize
63+
String movie_name = RG.read_group_info['PU']
64+
String bc_specific_aln_out = outdir + '/alignments/' + readgroup_id
65+
String bc_specific_metric_out = outdir + "/metrics/" + readgroup_id
66+
67+
call FF.FinalizeToFile as FinalizeAlignedBam { input: outdir = bc_specific_aln_out, file = AlignAndCheckFingerprintCCS.aligned_bam, name = readgroup_id + '.bam' }
68+
call FF.FinalizeToFile as FinalizeAlignedBai { input: outdir = bc_specific_aln_out, file = AlignAndCheckFingerprintCCS.aligned_bai, name = readgroup_id + '.bai' }
69+
call FF.FinalizeToFile as FinalizeAlignedPbi { input: outdir = bc_specific_aln_out, file = AlignAndCheckFingerprintCCS.aligned_pbi, name = readgroup_id + '.pbi' }
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 = MosDepthWGS.wgs_cov
86+
87+
Map[String, Float] alignment_metrics = AlignAndCheckFingerprintCCS.alignment_metrics
88+
File alignment_metrics_tar_gz = FinalizeAlnMetrics.gcs_path
89+
90+
String movie = movie_name
91+
92+
String? fingerprint_check_result = AlignAndCheckFingerprintCCS.fp_status
93+
Float? fingerprint_check_LOD = AlignAndCheckFingerprintCCS.fp_lod_expected_sample
94+
File? fingerprint_check_tar_gz = FinalizeFPDetails.gcs_path
95+
96+
String last_processing_date = today.yyyy_mm_dd
97+
}
98+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
version 1.0
2+
3+
import "../../../tasks/Visualization/NanoPlot.wdl"
4+
5+
import "../../../tasks/Utility/Utils.wdl"
6+
import "../../../tasks/Utility/BAMutils.wdl" as BU
7+
import "../../../tasks/Utility/GeneralUtils.wdl" as GU
8+
9+
import "../../../tasks/Utility/Finalize.wdl" as FF
10+
11+
workflow ProcessOnInstrumentDemuxedChunkRefFree {
12+
13+
meta {
14+
desciption: "!!! WARN: THIS IS PROJECT-CENTER SPECIFIC !!! Given an on-instrument demultiplexed hifi_reads.bam, perform ref-independent prep work."
15+
}
16+
17+
input {
18+
File uBAM
19+
20+
String readgroup_id
21+
22+
String gcs_out_root_dir
23+
}
24+
25+
###################################################################################
26+
# prep work
27+
28+
# where to store final results
29+
String workflow_name = "ProcessOnInstrumentDemuxedChunkRefFree"
30+
String outdir = sub(gcs_out_root_dir, "/$", "") + "/" + workflow_name
31+
String outdir_ref_free = outdir + '/RefFree'
32+
33+
###################################################################################
34+
# stats
35+
call NanoPlot.NanoPlotFromUBam {input: uBAM = uBAM}
36+
37+
call BU.BamToFastq {input: bam = uBAM, prefix = "does_not_matter"}
38+
###################################################################################
39+
# finalize
40+
call BU.GetReadGroupInfo as RG {input: bam = uBAM, keys = ['PU']}
41+
String movie_name = RG.read_group_info['PU']
42+
43+
String bc_specific_fastq_out = outdir_ref_free + '/' + readgroup_id
44+
call FF.FinalizeToFile as FinalizeFQ { input: outdir = bc_specific_fastq_out, file = BamToFastq.reads_fq, name = readgroup_id + '.hifi.fq.gz' }
45+
46+
###################################################################################
47+
48+
call GU.GetTodayDate as today {}
49+
50+
output {
51+
String movie = movie_name
52+
53+
File hifi_fq = FinalizeFQ.gcs_path
54+
Map[String, Float] hifi_stats = NanoPlotFromUBam.stats_map
55+
56+
String last_processing_date = today.yyyy_mm_dd
57+
}
58+
}

0 commit comments

Comments
 (0)