Skip to main content

fgumi_consensus/
lib.rs

1#![deny(unsafe_code)]
2
3//! Consensus calling and filtering for UMI-based molecular consensus reads
4//!
5//! This crate provides comprehensive functionality for generating consensus sequences
6//! from reads grouped by Unique Molecular Identifiers (UMIs). It includes:
7//!
8//! - **Base-level consensus calling**: Building consensus bases from multiple reads
9//! - **Duplex consensus**: Calling duplex consensus from paired single-strand consensuses
10//! - **Simple UMI consensus**: Fast consensus for non-overlapping reads
11//! - **Vanilla consensus**: Standard consensus without special features
12//! - **Overlapping consensus**: Handling overlapping read pairs
13//! - **Consensus filtering**: Quality-based filtering and masking of consensus reads
14//! - **Consensus tags**: SAM tags for tracking consensus metrics
15
16pub mod base_builder;
17pub mod caller;
18pub mod filter;
19pub mod overlapping;
20pub mod phred;
21pub mod sequence;
22pub mod simple_umi;
23pub mod tags;
24
25#[cfg(feature = "simplex")]
26pub mod vanilla_caller;
27
28#[cfg(feature = "duplex")]
29pub mod duplex_caller;
30
31#[cfg(feature = "codec")]
32pub mod codec_caller;
33
34mod vendored;
35
36// Re-export commonly used items
37pub use base_builder::ConsensusBaseBuilder;
38pub use caller::{ConsensusCaller, calculate_error_rate, log_consensus_statistics};
39pub use filter::{
40    ConsensusType, FilterConfig, FilterResult, FilterThresholds, compute_read_stats,
41    count_no_calls, filter_duplex_read, filter_read, is_duplex_consensus, mask_bases,
42    mask_duplex_bases, mean_base_quality, template_passes,
43};
44pub use overlapping::{
45    AgreementStrategy, CorrectionStats, DisagreementStrategy, OverlappingBasesConsensusCaller,
46    apply_overlapping_consensus,
47};
48pub use sequence::ConsensusSequence;
49
50#[cfg(feature = "simplex")]
51pub use vanilla_caller::{
52    VanillaConsensusRead, VanillaUmiConsensusCaller, VanillaUmiConsensusOptions,
53};
54
55#[cfg(feature = "simplex")]
56pub(crate) use vanilla_caller::{
57    IndexedSourceRead, ReadType, SourceRead, select_most_common_alignment_group,
58};
59
60#[cfg(feature = "duplex")]
61pub use duplex_caller::{DuplexConsensusCaller, DuplexConsensusRead};
62
63#[cfg(feature = "codec")]
64pub use codec_caller::{CodecConsensusCaller, CodecConsensusOptions, CodecConsensusStats};