Skip to content

Commit 82c04e3

Browse files
tpshea2claude
andcommitted
Fix Int overflow for bases_in_reads on large HiFi samples
read_int uses Integer.parseInt which caps at ~2.1 Gbp; samples with >2.1 Gbp of reads (e.g. 9.5 Gbp) caused t_02_HifiSeqkitStats to fail. Change bases_in_reads, bases_in_reads_over_10kb, bases_in_reads_over_20kb to Float/read_float throughout. Wrap bash interpolation in printf "%.0f" so $(( )) integer arithmetic handles Cromwell's scientific-notation output. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent d23fad6 commit 82c04e3

3 files changed

Lines changed: 15 additions & 15 deletions

File tree

wdl/pipelines/PacBio/Metagenomics/HvpReadProcessing.wdl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ workflow HvpReadProcessing {
114114
File seqkit_stats_tsv = t_02_HifiSeqkitStats.seqkit_stats_tsv
115115
File seqkit_fx2tab_tsv = t_02_HifiSeqkitStats.seqkit_fx2tab_tsv
116116
Int num_reads = t_02_HifiSeqkitStats.num_reads
117-
Int bases_in_reads = t_02_HifiSeqkitStats.bases_in_reads
117+
Float bases_in_reads = t_02_HifiSeqkitStats.bases_in_reads
118118
Int max_read_length = t_02_HifiSeqkitStats.max_read_length
119119
Int q1_read_length = t_02_HifiSeqkitStats.q1_read_length
120120
Int median_read_length = t_02_HifiSeqkitStats.median_read_length
@@ -123,8 +123,8 @@ workflow HvpReadProcessing {
123123
Float pct_q20_bases = t_02_HifiSeqkitStats.pct_q20_bases
124124
Float pct_q30_bases = t_02_HifiSeqkitStats.pct_q30_bases
125125
Float mean_read_gc = t_02_HifiSeqkitStats.mean_read_gc
126-
Int bases_in_reads_over_10kb = t_02_HifiSeqkitStats.bases_in_reads_over_10kb
127-
Int bases_in_reads_over_20kb = t_02_HifiSeqkitStats.bases_in_reads_over_20kb
126+
Float bases_in_reads_over_10kb = t_02_HifiSeqkitStats.bases_in_reads_over_10kb
127+
Float bases_in_reads_over_20kb = t_02_HifiSeqkitStats.bases_in_reads_over_20kb
128128

129129
File spikein_report = t_03_SpikeInRemoval.spikein_report
130130
File spikein_stats_tsv = t_03_SpikeInRemoval.spikein_stats_tsv

wdl/pipelines/PacBio/QC/HifiReadQCPipeline.wdl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,11 @@ workflow HifiReadQCPipeline {
134134
String expected_genome_size = t_01_GetTaxIdAndGenomeSize.expected_genome_size
135135

136136
Int num_reads = t_03_HifiSeqkitStats.num_reads
137-
Int bases_in_reads = t_03_HifiSeqkitStats.bases_in_reads
137+
Float bases_in_reads = t_03_HifiSeqkitStats.bases_in_reads
138138
String estimate_cvg = t_05_CreateHifiQCReport.estimate_cvg
139-
Int bases_in_reads_over_10kb = t_03_HifiSeqkitStats.bases_in_reads_over_10kb
139+
Float bases_in_reads_over_10kb = t_03_HifiSeqkitStats.bases_in_reads_over_10kb
140140
String estimate_cvg_reads_10kb = t_05_CreateHifiQCReport.estimate_cvg_reads_10kb
141-
Int bases_in_reads_over_20kb = t_03_HifiSeqkitStats.bases_in_reads_over_20kb
141+
Float bases_in_reads_over_20kb = t_03_HifiSeqkitStats.bases_in_reads_over_20kb
142142
String estimate_cvg_reads_20kb = t_05_CreateHifiQCReport.estimate_cvg_reads_20kb
143143
Int q1_read_length = t_03_HifiSeqkitStats.q1_read_length
144144
Int median_read_length = t_03_HifiSeqkitStats.median_read_length

wdl/tasks/QC/HifiQC.wdl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ task HifiSeqkitStats {
121121
File seqkit_fx2tab_tsv = "~{fq_basename}.seqkit_fx2tab.tsv"
122122

123123
Int num_reads = read_int("stat.num_reads.txt")
124-
Int bases_in_reads = read_int("stat.bases_in_reads.txt")
124+
Float bases_in_reads = read_float("stat.bases_in_reads.txt")
125125
Int max_read_length = read_int("stat.max_read_length.txt")
126126
Int q1_read_length = read_int("stat.q1_read_length.txt")
127127
Int median_read_length = read_int("stat.median_read_length.txt")
@@ -130,8 +130,8 @@ task HifiSeqkitStats {
130130
Float pct_q20_bases = read_float("stat.pct_q20_bases.txt")
131131
Float pct_q30_bases = read_float("stat.pct_q30_bases.txt")
132132
Float mean_read_gc = read_float("stat.mean_read_gc.txt")
133-
Int bases_in_reads_over_10kb = read_int("stat.bases_in_reads_over_10kb.txt")
134-
Int bases_in_reads_over_20kb = read_int("stat.bases_in_reads_over_20kb.txt")
133+
Float bases_in_reads_over_10kb = read_float("stat.bases_in_reads_over_10kb.txt")
134+
Float bases_in_reads_over_20kb = read_float("stat.bases_in_reads_over_20kb.txt")
135135
}
136136

137137
#########################
@@ -388,9 +388,9 @@ task CreateHifiQCReport {
388388
String expected_genome_size
389389

390390
Int num_reads
391-
Int bases_in_reads
392-
Int bases_in_reads_over_10kb
393-
Int bases_in_reads_over_20kb
391+
Float bases_in_reads
392+
Float bases_in_reads_over_10kb
393+
Float bases_in_reads_over_20kb
394394
Int q1_read_length
395395
Int median_read_length
396396
Int q3_read_length
@@ -438,9 +438,9 @@ task CreateHifiQCReport {
438438
# ---- end preamble ----
439439
440440
EXPECTED_GENOME_SIZE="~{expected_genome_size}"
441-
SUM_LEN=~{bases_in_reads}
442-
B10K=~{bases_in_reads_over_10kb}
443-
B20K=~{bases_in_reads_over_20kb}
441+
SUM_LEN=$(printf "%.0f" ~{bases_in_reads})
442+
B10K=$(printf "%.0f" ~{bases_in_reads_over_10kb})
443+
B20K=$(printf "%.0f" ~{bases_in_reads_over_20kb})
444444
445445
if [[ "${EXPECTED_GENOME_SIZE}" =~ ^[0-9]+$ ]] && [[ "${EXPECTED_GENOME_SIZE}" -gt 0 ]]; then
446446
EST_CVG=$(( SUM_LEN / EXPECTED_GENOME_SIZE ))

0 commit comments

Comments
 (0)