Skip to content

Commit 08a6213

Browse files
committed
Update progress formatting
1 parent 5215116 commit 08a6213

1 file changed

Lines changed: 18 additions & 11 deletions

File tree

src/consensus/mod.rs

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,20 @@ pub fn consensus(cli: &crate::cli::ConsensusArgs) -> Result<()> {
8383
let mut processed_clusters = 0;
8484
let mut processed_duplicate_groups = 0;
8585
let mut max_clusters = 0;
86+
let mut filtered_reads = 0;
8687

8788
let report_progress = |processed_reads: usize,
8889
total_num_reads: usize,
8990
processed_groups: usize,
9091
processed_clusters: usize,
92+
filtered_reads: usize,
9193
max_clusters: usize| {
9294
let cluster_ratio = processed_clusters as f64 / processed_groups as f64;
9395

9496
if cli.no_clustering {
95-
info!("proc: {processed_reads} / {total_num_reads} reads");
97+
info!("proc: {processed_reads} / {total_num_reads} reads (filtered: {filtered_reads})");
9698
} else {
97-
info!("proc: {processed_reads} / {total_num_reads} reads\t(clusters per duplicate group: avg {cluster_ratio:.2}, max {max_clusters})");
99+
info!("proc: {processed_reads} / {total_num_reads} reads\t(clusters per duplicate group: avg {cluster_ratio:.2}, max {max_clusters}; filtered: {filtered_reads})");
98100
}
99101
};
100102

@@ -132,8 +134,10 @@ pub fn consensus(cli: &crate::cli::ConsensusArgs) -> Result<()> {
132134
.collect::<Result<Vec<_>>>()?
133135
};
134136

135-
for (elem, num_reads, clusters, is_duplicate) in output.into_iter() {
137+
for (elem, num_reads, clusters, num_filtered_reads, is_duplicate) in output.into_iter() {
136138
processed_reads += num_reads;
139+
filtered_reads += num_filtered_reads;
140+
137141
if is_duplicate {
138142
processed_clusters += clusters;
139143
}
@@ -147,6 +151,7 @@ pub fn consensus(cli: &crate::cli::ConsensusArgs) -> Result<()> {
147151
total_num_reads,
148152
processed_duplicate_groups,
149153
processed_clusters,
154+
filtered_reads,
150155
max_clusters,
151156
);
152157
}
@@ -163,19 +168,21 @@ pub fn consensus(cli: &crate::cli::ConsensusArgs) -> Result<()> {
163168
total_num_reads,
164169
processed_duplicate_groups,
165170
processed_clusters,
171+
filtered_reads,
166172
max_clusters,
167173
);
168174

169-
info!("Complete\ninput: {total_num_reads} reads\nduplicate groups: {processed_duplicate_groups} groups\ntotal clusters: {processed_clusters}");
175+
info!("Complete\ninput: {total_num_reads} reads\nduplicate groups: {processed_duplicate_groups} groups\ntotal clusters: {processed_clusters}\nfiltered reads: {filtered_reads}");
170176

171177
Ok(())
172178
}
173179

174180
/// Main consensus caller: coordinates simplex vs consensus processing
181+
/// The result format is (Output text, # reads, # clusters, # filtered reads, is_duplicate_group)
175182
fn consensus_call(
176183
group: &DuplicateGroup,
177184
args: &ConsensusArgs,
178-
) -> Result<(String, usize, usize, bool)> {
185+
) -> Result<(String, usize, usize, usize, bool)> {
179186
if group.group_type == DuplicateGroupType::Filtered {
180187
handle_filtered_reads(group, args)
181188
} else if group.reads.len() == 1 {
@@ -189,7 +196,7 @@ fn consensus_call(
189196
fn handle_filtered_reads(
190197
group: &DuplicateGroup,
191198
args: &ConsensusArgs,
192-
) -> Result<(String, usize, usize, bool)> {
199+
) -> Result<(String, usize, usize, usize, bool)> {
193200
let reads_u8 = group.reads.concat();
194201
let header_builder = formatter::HeaderFormatter::new(group, args);
195202
let mut reader = FastqReader::new(Cursor::new(reads_u8));
@@ -215,14 +222,14 @@ fn handle_filtered_reads(
215222
read_idx += 1;
216223
}
217224

218-
Ok((result, group.reads.len(), 0, false))
225+
Ok((result, group.reads.len(), 0, group.reads.len(), false))
219226
}
220227

221228
/// Simplex read caller: processes single reads without consensus calling
222229
fn handle_simplex_read(
223230
group: &DuplicateGroup,
224231
args: &ConsensusArgs,
225-
) -> Result<(String, usize, usize, bool)> {
232+
) -> Result<(String, usize, usize, usize, bool)> {
226233
let reads_u8 = group.reads.concat();
227234
let mut header_builder = formatter::HeaderFormatter::new(group, args);
228235
let mut reader = FastqReader::new(Cursor::new(reads_u8));
@@ -247,14 +254,14 @@ fn handle_simplex_read(
247254
str::from_utf8(qual)?
248255
)?;
249256

250-
Ok((result, 1, 1, false))
257+
Ok((result, 1, 1, 0, false))
251258
}
252259

253260
/// Handles multi-read consensus calling with clustering
254261
fn process_consensus_reads(
255262
group: &DuplicateGroup,
256263
args: &ConsensusArgs,
257-
) -> Result<(String, usize, usize, bool)> {
264+
) -> Result<(String, usize, usize, usize, bool)> {
258265
// Filtered groups should always be simplex reads.
259266
assert_ne!(group.group_type, DuplicateGroupType::Filtered);
260267

@@ -301,7 +308,7 @@ fn process_consensus_reads(
301308
let consensus_output = generate_consensus_output(&mut graphs, &header_builder)?;
302309
result.push_str(&consensus_output);
303310

304-
Ok((result, group.reads.len(), graphs.len(), true))
311+
Ok((result, group.reads.len(), graphs.len(), 0, true))
305312
}
306313

307314
/// Determines which graph to cluster read with or creates new graph

0 commit comments

Comments
 (0)