pub struct FiberFilters {
pub bit_flag: Option<u16>,
pub filter_expression: Option<String>,
pub min_ml_score: u8,
pub uncompressed: bool,
pub strip_starting_basemods: i64,
pub fire_filter: bool,
pub skip_no_m6a: Option<bool>,
pub min_msp: Option<usize>,
pub min_ave_msp_size: Option<i64>,
}Expand description
This struct establishes the way a Fiber-seq bam should be filtered when it is read in. This struct is both used as an argument for building FiberSeq records and as a struct that is parsed into cli arguments.
Fields§
§bit_flag: Option<u16>BAM bit flags to filter on, equivalent to -F in samtools view
Defaults to 0 (no filtering)
filter_expression: Option<String>Filtering expression to use for filtering records Example: filter to nucleosomes with lengths greater than 150 bp -x “len(nuc)>150” Example: filter to msps with lengths between 30 and 49 bp -x “len(msp)=30:50” Example: combine 2+ filter expressions -x “len(nuc)<150,len(msp)=30:50” Filtering expressions support len() and qual() functions over msp, nuc, m6a, cpg
min_ml_score: u8Minium score in the ML tag to use or include in the output
uncompressed: boolOutput uncompressed BAM files
strip_starting_basemods: i64strip basemods in the first or last X bp of the read
fire_filter: boolConvenience: apply the FIRE peak-calling pipeline’s fiber-level filters
(--skip-no-m6a, --min-msp 10, --min-ave-msp-size 10). Individual
filter flags still override when both are set. Requires MSP/m6A
annotations on the input BAM, so it is a no-op for commands that run
before those annotations exist.
skip_no_m6a: Option<bool>Drop fibers with no m6A calls. Off by default;
--fire-filter turns this on unless explicitly set to false.
Use --skip-no-m6a=false to override when --fire-filter is set.
min_msp: Option<usize>Drop fibers with fewer than N MSP calls.
Off (0) by default; --fire-filter sets this to 10 unless overridden.
min_ave_msp_size: Option<i64>Drop fibers whose average MSP size is below N.
Off (0) by default; --fire-filter sets this to 10 unless overridden.
Implementations§
Source§impl FiberFilters
impl FiberFilters
Sourcepub fn get_bit_flag(&self) -> u16
pub fn get_bit_flag(&self) -> u16
Get the bit flag value, using a default if not explicitly set
Sourcepub fn resolved_skip_no_m6a(&self) -> bool
pub fn resolved_skip_no_m6a(&self) -> bool
Resolved --skip-no-m6a, using --fire-filter as the fallback.
Sourcepub fn resolved_min_msp(&self) -> usize
pub fn resolved_min_msp(&self) -> usize
Resolved --min-msp, using --fire-filter (10) as the fallback.
Sourcepub fn resolved_min_ave_msp_size(&self) -> i64
pub fn resolved_min_ave_msp_size(&self) -> i64
Resolved --min-ave-msp-size, using --fire-filter (10) as the fallback.
Sourcepub fn fire_filter_active(&self) -> bool
pub fn fire_filter_active(&self) -> bool
True if any FIRE fiber-level filter is active.
Sourcepub fn passes_fire_filter(&self, rec: &FiberseqData) -> bool
pub fn passes_fire_filter(&self, rec: &FiberseqData) -> bool
True if rec passes the FIRE fiber-level filters (skip_no_m6a,
min_msp, min_ave_msp_size). Called by FiberseqRecords::next so
every downstream consumer sees only filtered fibers.
Edge cases worth preserving:
- Fibers with zero MSPs are always rejected once any filter is active. The check also guards the divide-by-zero in the average MSP size below, so don’t drop it when refactoring.
- The no-m6a rejection is gated on
resolved_skip_no_m6a()so--skip-no-m6a=falseactually disables it (e.g. when combined with--fire-filter).
Sourcepub fn filter_on_bit_flags<'a, I>(
&'a self,
records: I,
) -> impl Iterator<Item = Record> + 'a
pub fn filter_on_bit_flags<'a, I>( &'a self, records: I, ) -> impl Iterator<Item = Record> + 'a
This function accepts an iterator over bam records and filters them based on the bit flag.
Trait Implementations§
Source§impl Args for FiberFilters
impl Args for FiberFilters
Source§fn augment_args<'b>(__clap_app: Command) -> Command
fn augment_args<'b>(__clap_app: Command) -> Command
Source§fn augment_args_for_update<'b>(__clap_app: Command) -> Command
fn augment_args_for_update<'b>(__clap_app: Command) -> Command
Command so it can instantiate self via
FromArgMatches::update_from_arg_matches_mut Read moreSource§impl Clone for FiberFilters
impl Clone for FiberFilters
Source§fn clone(&self) -> FiberFilters
fn clone(&self) -> FiberFilters
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FiberFilters
impl Debug for FiberFilters
Source§impl Default for FiberFilters
impl Default for FiberFilters
Source§impl FromArgMatches for FiberFilters
impl FromArgMatches for FiberFilters
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§fn update_from_arg_matches_mut(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Auto Trait Implementations§
impl Freeze for FiberFilters
impl RefUnwindSafe for FiberFilters
impl Send for FiberFilters
impl Sync for FiberFilters
impl Unpin for FiberFilters
impl UnsafeUnpin for FiberFilters
impl UnwindSafe for FiberFilters
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.