kira-spliceqc 0.2.0

Deterministic, explainable splicing QC for single-cell expression data.
Documentation
#[derive(Debug, Clone)]
pub struct SplicingInstabilityMetrics {
    pub panel_version: &'static str,
    pub min_genes: usize,
    pub conflict_panel_enabled: bool,
    pub nmd_panel_enabled: bool,
    pub splice_core: Vec<f32>,
    pub rbp_core: Vec<f32>,
    pub rloop_resolve_core: Vec<f32>,
    pub conflict_risk_core: Vec<f32>,
    pub nmd_core: Vec<f32>,
    pub sos: Vec<f32>,
    pub rlr: Vec<f32>,
    pub sii: Vec<f32>,
    pub splice_overload_high: Vec<bool>,
    pub rloop_risk_high: Vec<bool>,
    pub splicing_instability_high: Vec<bool>,
    pub genome_instability_splicing_flag: Vec<bool>,
    pub z_reference: SplicingInstabilityZReference,
    pub global_stats: SplicingInstabilityGlobalStats,
    pub cluster_stats: Vec<SplicingInstabilityClusterStat>,
    pub missingness: SplicingInstabilityMissingness,
}

#[derive(Debug, Clone)]
pub struct SplicingInstabilityRobustRef {
    pub median: f32,
    pub mad: f32,
}

#[derive(Debug, Clone)]
pub struct SplicingInstabilityZReference {
    pub splice_core: SplicingInstabilityRobustRef,
    pub rbp_core: SplicingInstabilityRobustRef,
    pub rloop_resolve_core: SplicingInstabilityRobustRef,
    pub conflict_risk_core: Option<SplicingInstabilityRobustRef>,
    pub nmd_core: Option<SplicingInstabilityRobustRef>,
}

#[derive(Debug, Clone)]
pub struct SplicingInstabilityGlobalStats {
    pub sos_p50: f32,
    pub sos_p90: f32,
    pub rlr_p50: f32,
    pub rlr_p90: f32,
    pub sii_p50: f32,
    pub sii_p90: f32,
}

#[derive(Debug, Clone)]
pub struct SplicingInstabilityClusterStat {
    pub cluster_id: String,
    pub n_cells: usize,
    pub sos_median: f32,
    pub sos_p10: f32,
    pub sos_p90: f32,
    pub rlr_median: f32,
    pub rlr_p10: f32,
    pub rlr_p90: f32,
    pub sii_median: f32,
    pub sii_p10: f32,
    pub sii_p90: f32,
    pub splice_overload_high_fraction: f32,
    pub rloop_risk_high_fraction: f32,
    pub splicing_instability_high_fraction: f32,
    pub genome_instability_splicing_flag_fraction: f32,
}

#[derive(Debug, Clone)]
pub struct PanelCoverage {
    pub panel_name: &'static str,
    pub genes_defined: usize,
    pub genes_mapped: usize,
}

#[derive(Debug, Clone)]
pub struct SplicingInstabilityMissingness {
    pub splice_core_nan_cells: usize,
    pub rbp_core_nan_cells: usize,
    pub rloop_resolve_core_nan_cells: usize,
    pub conflict_risk_core_nan_cells: usize,
    pub nmd_core_nan_cells: usize,
    pub sos_nan_cells: usize,
    pub rlr_nan_cells: usize,
    pub sii_nan_cells: usize,
    pub panel_coverage: Vec<PanelCoverage>,
}

pub const SPLICE_OVERLOAD_HIGH_THRESHOLD: f32 = 2.0;
pub const RLOOP_RISK_HIGH_THRESHOLD: f32 = 1.5;
pub const SPLICING_INSTABILITY_HIGH_THRESHOLD: f32 = 2.0;