Skip to content

Commit d5975e1

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

File tree

3 files changed

+164
-0
lines changed

3 files changed

+164
-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: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
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+
}
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)