-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
handle (ref-indepedent, alignment) a single piece of on-instrument demultiplexed CCS bam
- Loading branch information
1 parent
9b78448
commit c905a5a
Showing
3 changed files
with
162 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
98 changes: 98 additions & 0 deletions
98
wdl/pipelines/PacBio/Utility/ProcessOnInstrumentDemuxedChunk.wdl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
version 1.0 | ||
|
||
import "../../../tasks/Utility/PBUtils.wdl" | ||
import "../../../tasks/Utility/BAMutils.wdl" as BU | ||
import "../../../tasks/Utility/GeneralUtils.wdl" as GU | ||
|
||
import "../../../tasks/Utility/Finalize.wdl" as FF | ||
|
||
import "../../../tasks/Alignment/AlignAndCheckFingerprintCCS.wdl" as major | ||
import "../../../tasks/QC/AlignedMetrics.wdl" | ||
|
||
workflow ProcessOnInstrumentDemuxedChunk { | ||
|
||
meta { | ||
desciption: "!!! WARN: THIS IS PROJECT-CENTER SPECIFIC !!! Given an on-instrument demultiplexed hifi_reads.bam, perform alignment and QC check." | ||
} | ||
|
||
input { | ||
File uBAM | ||
|
||
String readgroup_id | ||
|
||
String bam_SM_field | ||
|
||
String fingerprint_store | ||
String sample_id_at_store | ||
Boolean turn_off_fingperprint_check = false | ||
|
||
File ref_map_file | ||
|
||
String gcs_out_root_dir | ||
} | ||
|
||
################################################################################### | ||
# prep work | ||
# where to store final results | ||
String workflow_name = "ProcessOnInstrumentDemuxedChunk" | ||
String outdir = sub(gcs_out_root_dir, "/$", "") + "/" + workflow_name | ||
|
||
################################################################################### | ||
# generate PBI | ||
call PBUtils.PBIndex as Index {input: bam = uBAM} | ||
call BU.GetReadGroupInfo as RG {input: bam = uBAM, keys = ['SM', 'LB', 'PU']} | ||
|
||
# major work | ||
call major.AlignAndCheckFingerprintCCS { | ||
input: | ||
uBAM = uBAM, | ||
uPBI = Index.pbi, | ||
bam_sample_name = bam_SM_field, | ||
library = RG.read_group_info['LB'], | ||
|
||
turn_off_fingperprint_check = turn_off_fingperprint_check, | ||
fp_store = fingerprint_store, | ||
sample_id_at_store = sample_id_at_store, | ||
ref_map_file = ref_map_file | ||
} | ||
|
||
call AlignedMetrics.MosDepthWGS { input: bam = AlignAndCheckFingerprintCCS.aligned_bam, bai = AlignAndCheckFingerprintCCS.aligned_bai} | ||
################################################################################### | ||
# finalize | ||
String movie_name = RG.read_group_info['PU'] | ||
String bc_specific_aln_out = outdir + '/alignments/' + readgroup_id | ||
String bc_specific_metric_out = outdir + "/metrics/" + readgroup_id | ||
|
||
call FF.FinalizeToFile as FinalizeAlignedBam { input: outdir = bc_specific_aln_out, file = AlignAndCheckFingerprintCCS.aligned_bam, name = readgroup_id + '.bam' } | ||
call FF.FinalizeToFile as FinalizeAlignedBai { input: outdir = bc_specific_aln_out, file = AlignAndCheckFingerprintCCS.aligned_bai, name = readgroup_id + '.bai' } | ||
call FF.FinalizeToFile as FinalizeAlignedPbi { input: outdir = bc_specific_aln_out, file = AlignAndCheckFingerprintCCS.aligned_pbi, name = readgroup_id + '.pbi' } | ||
|
||
call FF.FinalizeToFile as FinalizeAlnMetrics { input: outdir = bc_specific_metric_out, file = AlignAndCheckFingerprintCCS.alignment_metrics_tar_gz } | ||
|
||
if (! turn_off_fingperprint_check) { | ||
call FF.FinalizeToFile as FinalizeFPDetails { input: outdir = bc_specific_metric_out, file = select_first([AlignAndCheckFingerprintCCS.fingerprint_detail_tar_gz]) } | ||
} | ||
|
||
################################################################################### | ||
call GU.GetTodayDate as today {} | ||
|
||
output { | ||
File aligned_bam = FinalizeAlignedBam.gcs_path | ||
File aligned_bai = FinalizeAlignedBai.gcs_path | ||
File aligned_pbi = FinalizeAlignedPbi.gcs_path | ||
Float wgs_cov = MosDepthWGS.wgs_cov | ||
|
||
Map[String, Float] alignment_metrics = AlignAndCheckFingerprintCCS.alignment_metrics | ||
File alignment_metrics_tar_gz = FinalizeAlnMetrics.gcs_path | ||
|
||
String movie = movie_name | ||
|
||
String? fingerprint_check_result = AlignAndCheckFingerprintCCS.fp_status | ||
Float? fingerprint_check_LOD = AlignAndCheckFingerprintCCS.fp_lod_expected_sample | ||
File? fingerprint_check_tar_gz = FinalizeFPDetails.gcs_path | ||
|
||
String last_processing_date = today.yyyy_mm_dd | ||
} | ||
} |
58 changes: 58 additions & 0 deletions
58
wdl/pipelines/PacBio/Utility/ProcessOnInstrumentDemuxedChunkRefFree.wdl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
version 1.0 | ||
|
||
import "../../../tasks/Visualization/NanoPlot.wdl" | ||
|
||
import "../../../tasks/Utility/Utils.wdl" | ||
import "../../../tasks/Utility/BAMutils.wdl" as BU | ||
import "../../../tasks/Utility/GeneralUtils.wdl" as GU | ||
|
||
import "../../../tasks/Utility/Finalize.wdl" as FF | ||
|
||
workflow ProcessOnInstrumentDemuxedChunkRefFree { | ||
|
||
meta { | ||
desciption: "!!! WARN: THIS IS PROJECT-CENTER SPECIFIC !!! Given an on-instrument demultiplexed hifi_reads.bam, perform ref-independent prep work." | ||
} | ||
|
||
input { | ||
File uBAM | ||
|
||
String readgroup_id | ||
|
||
String gcs_out_root_dir | ||
} | ||
|
||
################################################################################### | ||
# prep work | ||
# where to store final results | ||
String workflow_name = "ProcessOnInstrumentDemuxedChunkRefFree" | ||
String outdir = sub(gcs_out_root_dir, "/$", "") + "/" + workflow_name | ||
String outdir_ref_free = outdir + '/RefFree' | ||
|
||
################################################################################### | ||
# stats | ||
call NanoPlot.NanoPlotFromUBam {input: uBAM = uBAM} | ||
|
||
call BU.BamToFastq {input: bam = uBAM, prefix = "does_not_matter"} | ||
################################################################################### | ||
# finalize | ||
call BU.GetReadGroupInfo as RG {input: bam = uBAM, keys = ['PU']} | ||
String movie_name = RG.read_group_info['PU'] | ||
|
||
String bc_specific_fastq_out = outdir_ref_free + '/' + readgroup_id | ||
call FF.FinalizeToFile as FinalizeFQ { input: outdir = bc_specific_fastq_out, file = BamToFastq.reads_fq, name = readgroup_id + '.hifi.fq.gz' } | ||
|
||
################################################################################### | ||
call GU.GetTodayDate as today {} | ||
|
||
output { | ||
String movie = movie_name | ||
|
||
File hifi_fq = FinalizeFQ.gcs_path | ||
Map[String, Float] hifi_stats = NanoPlotFromUBam.stats_map | ||
|
||
String last_processing_date = today.yyyy_mm_dd | ||
} | ||
} |