pub enum Expr {
Show 29 variants
Column(String),
Literal(ScalarValue),
Eq(Box<Expr>, Box<Expr>),
Neq(Box<Expr>, Box<Expr>),
Gt(Box<Expr>, Box<Expr>),
Gte(Box<Expr>, Box<Expr>),
Lt(Box<Expr>, Box<Expr>),
Lte(Box<Expr>, Box<Expr>),
And(Vec<Expr>),
Or(Vec<Expr>),
Not(Box<Expr>),
IsTransition,
IsTransversion,
IsSnp,
IsIndel,
IsPass,
InRegion(GenomicInterval),
InRegions(Vec<GenomicInterval>),
OnChromosome(String),
Contains(Box<Expr>, Box<Expr>),
StartsWith(Box<Expr>, Box<Expr>),
Matches(Box<Expr>, String),
Count,
Mean(Box<Expr>),
Sum(Box<Expr>),
Min(Box<Expr>),
Max(Box<Expr>),
TsTvRatio,
AlleleFrequency,
}Expand description
Expression in the GenomicFrame query language
Expressions form an abstract syntax tree (AST) that represents operations on genomic data. They are lazy - constructing an expression doesn’t execute anything, it just builds a plan that can later be optimized and executed.
Variants§
Column(String)
Reference to a column by name (e.g., “qual”, “chrom”, “pos”)
Literal(ScalarValue)
Literal scalar value
Eq(Box<Expr>, Box<Expr>)
Equal: column == value
Neq(Box<Expr>, Box<Expr>)
Not equal: column != value
Gt(Box<Expr>, Box<Expr>)
Greater than: column > value
Gte(Box<Expr>, Box<Expr>)
Greater than or equal: column >= value
Lt(Box<Expr>, Box<Expr>)
Less than: column < value
Lte(Box<Expr>, Box<Expr>)
Less than or equal: column <= value
And(Vec<Expr>)
Logical AND of multiple expressions
Or(Vec<Expr>)
Logical OR of multiple expressions
Not(Box<Expr>)
Logical NOT
IsTransition
Test if variant is a transition (A<->G or C<->T)
IsTransversion
Test if variant is a transversion
IsSnp
Test if variant is a SNP (single nucleotide polymorphism)
IsIndel
Test if variant is an indel (insertion/deletion)
IsPass
Test if variant passed all filters (FILTER == “PASS”)
InRegion(GenomicInterval)
Test if record overlaps a genomic region
InRegions(Vec<GenomicInterval>)
Test if record overlaps any of multiple regions
OnChromosome(String)
Test if chromosome matches
Contains(Box<Expr>, Box<Expr>)
String contains substring
StartsWith(Box<Expr>, Box<Expr>)
String starts with prefix
Matches(Box<Expr>, String)
String matches regex pattern
Count
Count records
Mean(Box<Expr>)
Mean of expression values
Sum(Box<Expr>)
Sum of expression values
Min(Box<Expr>)
Minimum value
Max(Box<Expr>)
Maximum value
TsTvRatio
Transition/transversion ratio (genomic-specific)
AlleleFrequency
Allele frequency calculation
Implementations§
Trait Implementations§
Source§impl ExprToFilter<BamRecord> for Expr
impl ExprToFilter<BamRecord> for Expr
Source§impl ExprToFilter<BedRecord> for Expr
impl ExprToFilter<BedRecord> for Expr
Source§impl ExprToFilter<FastqRecord> for Expr
impl ExprToFilter<FastqRecord> for Expr
Source§fn compile(&self) -> Result<Box<dyn RecordFilter<FastqRecord>>>
fn compile(&self) -> Result<Box<dyn RecordFilter<FastqRecord>>>
Source§impl ExprToFilter<VcfRecord> for Expr
impl ExprToFilter<VcfRecord> for Expr
impl StructuralPartialEq for Expr
Auto Trait Implementations§
impl Freeze for Expr
impl RefUnwindSafe for Expr
impl Send for Expr
impl Sync for Expr
impl Unpin for Expr
impl UnsafeUnpin for Expr
impl UnwindSafe for Expr
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,
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 more